summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2014-01-01 18:07:30 +0000
committerLars Wirzenius <liw@liw.fi>2014-01-01 18:07:30 +0000
commitdc94123682ff6066e613149374b24425ef3dc5c8 (patch)
treea4a5271198e6ef0721dc38e193833f447f36fd7b
parent852623e975a8d0cc4538b069a7cf1348c049526a (diff)
downloadobnam-dc94123682ff6066e613149374b24425ef3dc5c8.tar.gz
Rely on larch's journalling when removing generations
This simplifies the code, to my great joy.
-rw-r--r--obnamlib/fmt_6/repo_fmt_6.py31
-rw-r--r--test-gpghome/random_seedbin600 -> 600 bytes
2 files changed, 13 insertions, 18 deletions
diff --git a/obnamlib/fmt_6/repo_fmt_6.py b/obnamlib/fmt_6/repo_fmt_6.py
index 487db598..500fc30f 100644
--- a/obnamlib/fmt_6/repo_fmt_6.py
+++ b/obnamlib/fmt_6/repo_fmt_6.py
@@ -82,7 +82,7 @@ class _OpenClient(object):
self.locked = False
self.client = client
self.current_generation_number = None
- self.removed_generation_numbers = []
+ self.generations_removed = False
class RepositoryFormat6(obnamlib.RepositoryInterface):
@@ -354,21 +354,11 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
open_client = self._open_clients[client_name]
- if open_client.removed_generation_numbers:
- self._remove_chunks_from_removed_generations(
- client_name, open_client.client,
- open_client.removed_generation_numbers)
- open_client.client.start_changes(create_tree=False)
- for gen_number in open_client.removed_generation_numbers:
- open_client.client.remove_generation(gen_number)
-
- if (open_client.current_generation_number and
- open_client.current_generation_number not in
- open_client.removed_generation_numbers):
+ if open_client.current_generation_number:
open_client.client.set_generation_ended(self._current_time())
- if (open_client.current_generation_number or
- open_client.removed_generation_numbers):
+ if (open_client.current_generation_number or
+ open_client.generations_removed):
open_client.client.commit()
self._raw_unlock_client(client_name)
@@ -423,8 +413,7 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
open_client = self._open_clients[client_name]
return [
(client_name, gen_number)
- for gen_number in client.list_generations()
- if gen_number not in open_client.removed_generation_numbers]
+ for gen_number in client.list_generations()]
def create_generation(self, client_name):
tracing.trace('client_name=%s', client_name)
@@ -529,10 +518,16 @@ class RepositoryFormat6(obnamlib.RepositoryInterface):
client_name, gen_number = gen_id
self._require_client_lock(client_name)
self._require_existing_generation(gen_id)
+
open_client = self._open_clients[client_name]
if gen_number == open_client.current_generation_number:
- open_client.current_generation = None
- open_client.removed_generation_numbers.append(gen_number)
+ open_client.current_generation_number = None
+ open_client.generations_removed = True
+
+ self._remove_chunks_from_removed_generations(
+ client_name, open_client.client, [gen_number])
+ open_client.client.start_changes(create_tree=False)
+ open_client.client.remove_generation(gen_number)
def get_generation_chunk_ids(self, generation_id):
client_name, gen_number = generation_id
diff --git a/test-gpghome/random_seed b/test-gpghome/random_seed
index b373d2e3..ffa0e26a 100644
--- a/test-gpghome/random_seed
+++ b/test-gpghome/random_seed
Binary files differ