From 7428d2aa50a54419a0644794f4f6d59d6e255923 Mon Sep 17 00:00:00 2001 From: jakedt Date: Mon, 17 Feb 2014 14:38:35 -0500 Subject: [PATCH] Fix the garbage collect method to remove unused old images. --- data/model.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/data/model.py b/data/model.py index 812a367eb..0a76eee89 100644 --- a/data/model.py +++ b/data/model.py @@ -1011,15 +1011,19 @@ def garbage_collect_repository(namespace_name, repository_name): uuids_to_check_for_gc = set() for image_id_to_remove in to_remove: image_to_remove = all_images[image_id_to_remove] - image_to_remove.delete_instance() - if not image_to_remove.storage: + if not image_to_remove.storage or not image_to_remove.storage.id: image_path = store.image_path(namespace_name, repository_name, image_to_remove.docker_image_id, None) logger.debug('Deleting image storage: %s', image_path) + store.remove(image_path) else: + logger.debug('Adding image storage to the gc list: %s', + image_to_remove.storage.uuid) uuids_to_check_for_gc.add(image_to_remove.storage.uuid) + image_to_remove.delete_instance() + storage_to_remove = (ImageStorage .select() .join(Image, JOIN_LEFT_OUTER) @@ -1139,7 +1143,7 @@ def delete_all_repository_tags(namespace_name, repository_name): except Repository.DoesNotExist: raise DataModelException('Invalid repository \'%s/%s\'' % (namespace_name, repository_name)) - RepositoryTag.delete().where(RepositoryTag.repository == repo).execute() + RepositoryTag.delete().where(RepositoryTag.repository == repo.id).execute() def __entity_permission_repo_query(entity_id, entity_table,