Răsfoiți Sursa

Merge branch 'issue_183' into merge

Thomas Waldmann 10 ani în urmă
părinte
comite
a44eecb05e
2 a modificat fișierele cu 6 adăugiri și 10 ștergeri
  1. 5 9
      attic/archive.py
  2. 1 1
      attic/archiver.py

+ 5 - 9
attic/archive.py

@@ -14,7 +14,6 @@ import sys
 import time
 import time
 from io import BytesIO
 from io import BytesIO
 from attic import xattr
 from attic import xattr
-from attic.cache import Cache
 from attic.platform import acl_get, acl_set
 from attic.platform import acl_get, acl_set
 from attic.chunker import Chunker
 from attic.chunker import Chunker
 from attic.hashindex import ChunkIndex
 from attic.hashindex import ChunkIndex
@@ -224,22 +223,19 @@ class Archive:
         self.repository.commit()
         self.repository.commit()
         self.cache.commit()
         self.cache.commit()
 
 
-    def calc_stats(self):
+    def calc_stats(self, cache):
         def add(id):
         def add(id):
-            count, size, csize = cache.chunks[id]
+            count, size, csize = self.cache.chunks[id]
             stats.update(size, csize, count == 1)
             stats.update(size, csize, count == 1)
-            cache.chunks[id] = count - 1, size, csize  # dirties cache.chunks!
-
+            self.cache.chunks[id] = count - 1, size, csize
         def add_file_chunks(chunks):
         def add_file_chunks(chunks):
             for id, _, _ in chunks:
             for id, _, _ in chunks:
                 add(id)
                 add(id)
-
         # This function is a bit evil since it abuses the cache to calculate
         # This function is a bit evil since it abuses the cache to calculate
-        # the stats. The cache transaction must be rolled back afterwards.
-        cache = Cache(self.repository, self.key, self.manifest)
+        # the stats. The cache transaction must be rolled back afterwards
+        unpacker = msgpack.Unpacker(use_list=False)
         cache.begin_txn()
         cache.begin_txn()
         stats = Statistics()
         stats = Statistics()
-        unpacker = msgpack.Unpacker(use_list=False)
         add(self.id)
         add(self.id)
         for id, chunk in zip(self.metadata[b'items'], self.repository.get_many(self.metadata[b'items'])):
         for id, chunk in zip(self.metadata[b'items'], self.repository.get_many(self.metadata[b'items'])):
             add(id)
             add(id)

+ 1 - 1
attic/archiver.py

@@ -359,7 +359,7 @@ Type "Yes I am sure" if you understand this and want to continue.\n""")
         manifest, key = Manifest.load(repository)
         manifest, key = Manifest.load(repository)
         cache = Cache(repository, key, manifest, do_files=args.cache_files)
         cache = Cache(repository, key, manifest, do_files=args.cache_files)
         archive = Archive(repository, key, manifest, args.archive.archive, cache=cache)
         archive = Archive(repository, key, manifest, args.archive.archive, cache=cache)
-        stats = archive.calc_stats()
+        stats = archive.calc_stats(cache)
         print('Name:', archive.name)
         print('Name:', archive.name)
         print('Fingerprint: %s' % hexlify(archive.id).decode('ascii'))
         print('Fingerprint: %s' % hexlify(archive.id).decode('ascii'))
         print('Hostname:', archive.metadata[b'hostname'])
         print('Hostname:', archive.metadata[b'hostname'])