diff --git a/endpoints/v1/registry.py b/endpoints/v1/registry.py index 7267fa0df..e1838730d 100644 --- a/endpoints/v1/registry.py +++ b/endpoints/v1/registry.py @@ -252,7 +252,11 @@ def put_image_layer(namespace, repository, image_id): # Stream write the data to storage. with database.CloseForLongOperation(app.config): - store.stream_write(repo_image.storage.locations, layer_path, sr) + try: + store.stream_write(repo_image.storage.locations, layer_path, sr) + except IOError: + logger.exception('Exception when writing image data') + abort(520, 'Image %(image_id)s could not be written. Please try again.', image_id=image_id) # Append the computed checksum. csums = [] diff --git a/storage/cloud.py b/storage/cloud.py index 89ebf53aa..d333d0358 100644 --- a/storage/cloud.py +++ b/storage/cloud.py @@ -167,7 +167,8 @@ class _CloudStorage(BaseStorage): except IOError: app.metric_queue.put('MultipartUploadFailure', 1) mp.cancel_upload() - break + raise + app.metric_queue.put('MultipartUploadSuccess', 1) mp.complete_upload()