diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-06-11 19:32:20 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-06-11 19:32:20 +0300 |
commit | 942869632d00515f6c466432c6fc7577d6cdd5c1 (patch) | |
tree | 6b8cd9e2a795906a23cea94f3202789ad9a833e2 | |
parent | 355a10cb202c4bc37a098be2790fa5856f161952 (diff) | |
download | obnam-942869632d00515f6c466432c6fc7577d6cdd5c1.tar.gz |
temp: add logic for removing unused chunks
-rw-r--r-- | obnamlib/fmt_ga/indexes.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/obnamlib/fmt_ga/indexes.py b/obnamlib/fmt_ga/indexes.py index 16f3e5d7..d41e1d9d 100644 --- a/obnamlib/fmt_ga/indexes.py +++ b/obnamlib/fmt_ga/indexes.py @@ -192,8 +192,14 @@ class GAChunkIndexes(object): self._used_by_tree.insert(chunk_id, None) def remove_unused_chunks(self, chunk_store): - # FIXME: This requires having a way to list keys in a CowTree. - pass + unused_chunks = self.get_unused_chunks) + # FIXME: Drop unused chunks from all cowtreess + + maybe_unused_bags = self.get_bags_containing_chunks( + chunk_store, unused_chunks) + for bag_id in maybe_unused_bags: + if not self.bag_is_used(bag_id): + chunk_store.remove_bag(bag_id) def get_unused_chunks(self): return [ @@ -205,7 +211,7 @@ class GAChunkIndexes(object): def is_chunk_used_by_anyone(self, chunk_id): return self._used_by_tree(chunk_id) != [] - def get_bags_contianing_chunks(self, chunk_store, chunk_ids): + def get_bags_containing_chunks(self, chunk_store, chunk_ids): return set( chunk_id for chunk_id in chunk_ids |