def _write_derived_image_to_storage(verb, derived_image, queue_file): """ Read from the generated stream and write it back to the storage engine. This method runs in a separate process. """ def handle_exception(ex): logger.debug('Exception when building %s derived image %s: %s', verb, derived_image, ex) with database.UseThenDisconnect(app.config): registry_model.delete_derived_image(derived_image) queue_file.add_exception_handler(handle_exception) # Re-Initialize the storage engine because some may not respond well to forking (e.g. S3) store = Storage(app, metric_queue, config_provider=config_provider, ip_resolver=ip_resolver) try: store.stream_write(derived_image.blob.placements, derived_image.blob.storage_path, queue_file) except IOError as ex: logger.debug('Exception when writing %s derived image %s: %s', verb, derived_image, ex) with database.UseThenDisconnect(app.config): registry_model.delete_derived_image(derived_image) queue_file.close()
def handle_exception(ex): logger.debug( "Exception when building %s derived image %s (%s/%s:%s): %s", verb, derived_image, namespace, repository, tag_name, ex, ) with database.UseThenDisconnect(app.config): registry_model.delete_derived_image(derived_image)
def handle_exception(ex): logger.debug('Exception when building %s derived image %s: %s', verb, derived_image, ex) with database.UseThenDisconnect(app.config): registry_model.delete_derived_image(derived_image)