summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-06-11 19:32:20 +0300
committerLars Wirzenius <liw@liw.fi>2017-06-11 19:32:20 +0300
commit942869632d00515f6c466432c6fc7577d6cdd5c1 (patch)
tree6b8cd9e2a795906a23cea94f3202789ad9a833e2
parent355a10cb202c4bc37a098be2790fa5856f161952 (diff)
downloadobnam-942869632d00515f6c466432c6fc7577d6cdd5c1.tar.gz
temp: add logic for removing unused chunks
-rw-r--r--obnamlib/fmt_ga/indexes.py12
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