瀏覽代碼

Fix cache recreation bug

Jonas Borgström 14 年之前
父節點
當前提交
e72c558dec
共有 2 個文件被更改,包括 11 次插入6 次删除
  1. 0 1
      dedupestore/archiver.py
  2. 11 5
      dedupestore/cache.py

+ 0 - 1
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()

+ 11 - 5
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