From 5b089653d1c805ae458a96c3e0f917710b58e862 Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Fri, 2 Nov 2018 15:56:18 -0400 Subject: [PATCH] Add an extra check in garbage collection to ensure we don't delete manifests referenced by other new-style tags --- data/model/tag.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/data/model/tag.py b/data/model/tag.py index 3cd14f298..b8148c6d8 100644 --- a/data/model/tag.py +++ b/data/model/tag.py @@ -438,6 +438,15 @@ def _delete_tags(repo, query_modifier=None): still_referenced_manifests = set([tmt.manifest_id for tmt in ref_query]) manifest_ids_to_delete = list(manifest_ids_to_delete - still_referenced_manifests) + # Filter out any manifests referenced by other tags. + if manifest_ids_to_delete: + ref_query = (Tag + .select() + .where(Tag.manifest << manifest_ids_to_delete)) + + still_referenced_manifests = set([t.manifest_id for t in ref_query]) + manifest_ids_to_delete = list(set(manifest_ids_to_delete) - still_referenced_manifests) + num_deleted_manifests = 0 if len(tag_manifest_ids_to_delete) > 0: # Find the set of IDs for all the labels to delete.