- Make sure we log when an exception occurs in the squashing code

- Have queue file always try to return any remaining data in the buffer
- Remove the raise of the exception when we get an empty tar file
This commit is contained in:
Joseph Schorr 2014-10-16 12:54:16 -04:00
parent 53349e313e
commit a423032e80
3 changed files with 4 additions and 2 deletions

View file

@ -49,6 +49,7 @@ def _write_synthetic_image_to_storage(linked_storage_uuid, linked_locations, que
store = Storage(app)
def handle_exception(ex):
logger.debug('Exception when building squashed image %s: %s', linked_storage_uuid, ex)
model.delete_derived_storage_by_uuid(linked_storage_uuid)
queue_file.add_exception_handler(handle_exception)

View file

@ -20,7 +20,9 @@ class QueueFile(object):
def read(self, size=8192):
if self._closed or self._done:
return None
buf = self._buffer[0:size]
self._buffer = self._buffer[size:]
return buf
while len(self._buffer) < size:
result = self._queue.get(block=True)

View file

@ -13,7 +13,6 @@ class TarLayerFormat(object):
try:
tar_file = tarfile.open(mode='r|*', fileobj=current_tar)
except tarfile.ReadError as re:
raise re
continue
# For each of the tar entries, yield them IF and ONLY IF we have not