summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-08-01 16:00:52 +0300
committerLars Wirzenius <liw@liw.fi>2015-08-01 16:12:27 +0300
commit27f87020b12ef378c469089d9d6f7c6c5df22b14 (patch)
treeff2f045319cf45374ac8ed2b8c514670bbe5b85c
parent79007e1c701068f807da02f9e906a5a3750d0bde (diff)
downloadobnam-27f87020b12ef378c469089d9d6f7c6c5df22b14.tar.gz
forget: Commit changes after each generation
This means that if the forget operation is aborted, the next run will not have to re-do the work for all generations that were already processed. Suggested-by: Lukáš Poláček
-rw-r--r--obnamlib/plugins/forget_plugin.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/obnamlib/plugins/forget_plugin.py b/obnamlib/plugins/forget_plugin.py
index a698d177..c7352c99 100644
--- a/obnamlib/plugins/forget_plugin.py
+++ b/obnamlib/plugins/forget_plugin.py
@@ -82,7 +82,16 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
else:
removeids = []
- self.remove_generations(removeids)
+ self.app.ts['gens'] = removeids
+ for genid in removeids:
+ self.app.ts['gen'] = genid
+ self.remove(genid)
+ self.repo.commit_client(client_name)
+ self.repo.commit_chunk_indexes()
+ self.repo.remove_unused_chunks()
+ self.app.dump_memory_profile(
+ 'after removing %s' %
+ self.repo.make_generation_spec(genid))
# Commit or unlock everything.
self.repo.commit_client(client_name)
@@ -120,15 +129,6 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
keepids = set(genid for genid, dt in keeplist)
return [genid for genid, dt in genlist if genid not in keepids]
- def remove_generations(self, removeids):
- self.app.ts['gens'] = removeids
- for genid in removeids:
- self.app.ts['gen'] = genid
- self.remove(genid)
- self.app.dump_memory_profile(
- 'after removing %s' %
- self.repo.make_generation_spec(genid))
-
def remove(self, genid):
if self.app.settings['pretend']:
self.app.ts.notify(