diff options
author | Lars Wirzenius <liw@liw.fi> | 2015-07-25 14:17:28 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2015-07-25 14:26:08 +0300 |
commit | 631a029f32aab55aab22e181d2c7d7b1b56e8309 (patch) | |
tree | 0c31627d2e527b696cef5eba3c5327cb12a86b78 | |
parent | a0012677e1c736cdc8a9c525e33a62fb38fbd50d (diff) | |
download | obnam-631a029f32aab55aab22e181d2c7d7b1b56e8309.tar.gz |
Drop --ignore-missing-chunks option
We want robustness by default, and always.
-rw-r--r-- | obnamlib/delegator.py | 4 | ||||
-rw-r--r-- | obnamlib/fmt_6/repo_fmt_6.py | 18 | ||||
-rw-r--r-- | obnamlib/fmt_ga/client.py | 2 | ||||
-rw-r--r-- | obnamlib/plugins/forget_plugin.py | 10 | ||||
-rw-r--r-- | obnamlib/repo_interface.py | 5 |
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() |