summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-07-25 14:17:28 +0300
committerLars Wirzenius <liw@liw.fi>2015-07-25 14:26:08 +0300
commit631a029f32aab55aab22e181d2c7d7b1b56e8309 (patch)
tree0c31627d2e527b696cef5eba3c5327cb12a86b78
parenta0012677e1c736cdc8a9c525e33a62fb38fbd50d (diff)
downloadobnam-631a029f32aab55aab22e181d2c7d7b1b56e8309.tar.gz
Drop --ignore-missing-chunks option
We want robustness by default, and always.
-rw-r--r--obnamlib/delegator.py4
-rw-r--r--obnamlib/fmt_6/repo_fmt_6.py18
-rw-r--r--obnamlib/fmt_ga/client.py2
-rw-r--r--obnamlib/plugins/forget_plugin.py10
-rw-r--r--obnamlib/repo_interface.py5
5 files changed, 14 insertions, 25 deletions
diff --git a/obnamlib/delegator.py b/obnamlib/delegator.py
index 5065a62d..f0c6038a 100644
--- a/obnamlib/delegator.py
+++ b/obnamlib/delegator.py
@@ -198,10 +198,10 @@ class RepositoryDelegator(obnamlib.RepositoryInterface):
client = self._lookup_client_by_generation(generation_id)
return client.set_generation_key(generation_id.gen_number, key, value)
- def remove_generation(self, generation_id, ignore_missing_chunks=False):
+ def remove_generation(self, generation_id):
self._require_got_client_lock(generation_id.client_name)
client = self._lookup_client_by_generation(generation_id)
- return client.remove_generation(generation_id.gen_number, ignore_missing_chunks)
+ return client.remove_generation(generation_id.gen_number)
def get_generation_chunk_ids(self, generation_id):
client = self._lookup_client_by_generation(generation_id)
diff --git a/obnamlib/fmt_6/repo_fmt_6.py b/obnamlib/fmt_6/repo_fmt_6.py
index 3cc54426..352a73f2 100644
--- a/obnamlib/fmt_6/repo_fmt_6.py
+++ b/obnamlib/fmt_6/repo_fmt_6.py
@@ -340,7 +340,7 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
self._raw_unlock_client(client_name)
def _remove_chunks_from_removed_generations(
- self, client_name, remove_gen_nos, ignore_missing_chunks=False):
+ self, client_name, remove_gen_nos):
def find_chunkids_in_gens(gen_nos):
chunkids = set()
@@ -358,7 +358,7 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
keep.append(gen_number)
return keep
- def remove_chunks(chunk_ids, ignore_missing_chunks=False): # pragma: no cover
+ def remove_chunks(chunk_ids): # pragma: no cover
for chunk_id in chunk_ids:
try:
checksum = self._chunklist.get_checksum(chunk_id)
@@ -368,16 +368,17 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
self._remove_chunk(chunk_id)
else:
self.remove_chunk_from_indexes(chunk_id, client_name)
- # We can skip removal if the chunk doesn't exist
- skip_removal = ignore_missing_chunks and not self.has_chunk(chunk_id)
- if not skip_removal and not self._chunksums.chunk_is_used(checksum, chunk_id):
+ can_be_removed = (
+ self.has_chunk(chunk_id) and
+ not self._chunksums.chunk_is_used(checksum, chunk_id))
+ if can_be_removed:
self._remove_chunk(chunk_id)
keep_gen_nos = find_gens_to_keep()
keep_chunkids = find_chunkids_in_gens(keep_gen_nos)
maybe_remove_chunkids = find_chunkids_in_gens(remove_gen_nos)
remove_chunkids = maybe_remove_chunkids.difference(keep_chunkids)
- remove_chunks(remove_chunkids, ignore_missing_chunks)
+ remove_chunks(remove_chunkids)
def get_allowed_client_keys(self):
return []
@@ -549,7 +550,7 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
client_name, gen_number = self._unpack_gen_id(gen_id)
return str(gen_number)
- def remove_generation(self, gen_id, ignore_missing_chunks=False):
+ def remove_generation(self, gen_id):
tracing.trace('gen_id=%s' % repr(gen_id))
client_name, gen_number = self._unpack_gen_id(gen_id)
self._require_client_lock(client_name)
@@ -563,8 +564,7 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
self._forget_open_client_info_cached_generation(
open_client_info, gen_id)
- self._remove_chunks_from_removed_generations(client_name, [gen_number],
- ignore_missing_chunks)
+ self._remove_chunks_from_removed_generations(client_name, [gen_number])
open_client_info.client.start_changes(create_tree=False)
open_client_info.client.remove_generation(gen_number)
diff --git a/obnamlib/fmt_ga/client.py b/obnamlib/fmt_ga/client.py
index ecd3b21a..65422855 100644
--- a/obnamlib/fmt_ga/client.py
+++ b/obnamlib/fmt_ga/client.py
@@ -174,7 +174,7 @@ class GAClient(object):
else:
return str(1)
- def remove_generation(self, gen_number, ignore_missing_chunks=False):
+ def remove_generation(self, gen_number):
self._load_data()
remaining = []
removed = False
diff --git a/obnamlib/plugins/forget_plugin.py b/obnamlib/plugins/forget_plugin.py
index b8606990..860cd116 100644
--- a/obnamlib/plugins/forget_plugin.py
+++ b/obnamlib/plugins/forget_plugin.py
@@ -24,8 +24,6 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
'''Forget generations.'''
def enable(self):
- forget_group = obnamlib.option_group['forget'] = 'Forgetting generations (forget)'
-
self.app.add_subcommand(
'forget', self.forget, arg_synopsis='[GENERATION]...')
self.app.settings.string(
@@ -33,12 +31,6 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
'policy for what generations to keep '
'when forgetting')
- self.app.settings.boolean(
- ['ignore-missing-chunks'],
- 'ignore missing chunks when forgetting generations',
- default=True,
- group=forget_group)
-
def forget(self, args):
'''Forget (remove) specified backup generations.'''
self.app.settings.require('repository')
@@ -138,4 +130,4 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
'Pretending to remove generation %s' %
self.repo.make_generation_spec(genid))
else:
- self.repo.remove_generation(genid, self.app.settings['ignore-missing-chunks'])
+ self.repo.remove_generation(genid)
diff --git a/obnamlib/repo_interface.py b/obnamlib/repo_interface.py
index 50832290..f16d6925 100644
--- a/obnamlib/repo_interface.py
+++ b/obnamlib/repo_interface.py
@@ -572,14 +572,11 @@ class RepositoryInterface(object):
'''Set a key/value pair for a given generation.'''
raise NotImplementedError()
- def remove_generation(self, generation_id, ignore_missing_chunks=False):
+ def remove_generation(self, generation_id):
'''Remove an existing generation.
The removed generation may be the currently unfinished one.
- When removing chunks, don't try to remove those that are missing
- if ignore_missing_chunks is set to True.
-
'''
raise NotImplementedError()