From e72c558decaedcf20689317617aa51aaec258858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Borgstr=C3=B6m?= Date: Sun, 17 Oct 2010 18:05:46 +0200 Subject: [PATCH] Fix cache recreation bug --- dedupestore/archiver.py | 1 - dedupestore/cache.py | 16 +++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dedupestore/archiver.py b/dedupestore/archiver.py index 9e5b59585..44d1eecfc 100644 --- a/dedupestore/archiver.py +++ b/dedupestore/archiver.py @@ -67,7 +67,6 @@ class Archive(object): datum_writer = io.DatumWriter(archive_schema) datum_writer.write(archive, encoder) data = zlib.compress(writer.getvalue()) - print 'archive size: %d' % len(data) self.id = hashlib.sha256(data).digest() self.store.put(NS_ARCHIVES, self.id, data) self.store.commit() diff --git a/dedupestore/cache.py b/dedupestore/cache.py index 5de1b3700..ba04a526d 100644 --- a/dedupestore/cache.py +++ b/dedupestore/cache.py @@ -57,11 +57,17 @@ class Cache(object): decoder = io.BinaryDecoder(buffer) archive = reader.read(decoder) self.archives[archive['name']] = id - for id, size in archive['chunks']: - if self.seen_chunk(id): - self.chunk_incref(id) - else: - self.init_chunk(id, size) + for item in archive['items']: + if item['type'] != 'FILE': + continue + for idx in item['chunks']: + chunk = archive['chunks'][idx] + id = chunk['id'] + if self.seen_chunk(id): + self.chunk_incref(id) + else: + self.init_chunk(id, chunk['size']) + self.save() def save(self): assert self.store.state == self.store.OPEN