2
0
Эх сурвалжийг харах

Do not create items_buffer and chunker unless we are creating new archive

Listing repositories with lots of archives on low-memory systems would cause attic to run out of memory due to items_buffer and chunker being created for each visited archive.

See https://github.com/jborg/attic/issues/163
Dmitry Astapov 10 жил өмнө
parent
commit
6be2734b7e

+ 2 - 2
attic/archive.py

@@ -131,10 +131,10 @@ class Archive:
         self.name = name
         self.name = name
         self.checkpoint_interval = checkpoint_interval
         self.checkpoint_interval = checkpoint_interval
         self.numeric_owner = numeric_owner
         self.numeric_owner = numeric_owner
-        self.items_buffer = CacheChunkBuffer(self.cache, self.key, self.stats)
         self.pipeline = DownloadPipeline(self.repository, self.key)
         self.pipeline = DownloadPipeline(self.repository, self.key)
-        self.chunker = Chunker(WINDOW_SIZE, CHUNK_MASK, CHUNK_MIN, self.key.chunk_seed)
         if create:
         if create:
+            self.items_buffer = CacheChunkBuffer(self.cache, self.key, self.stats)
+            self.chunker = Chunker(WINDOW_SIZE, CHUNK_MASK, CHUNK_MIN, self.key.chunk_seed)
             if name in manifest.archives:
             if name in manifest.archives:
                 raise self.AlreadyExists(name)
                 raise self.AlreadyExists(name)
             self.last_checkpoint = time.time()
             self.last_checkpoint = time.time()