From 6be2734b7e5d1dbf57526ba16d1e133824851938 Mon Sep 17 00:00:00 2001 From: Dmitry Astapov Date: Wed, 18 Mar 2015 12:42:28 +0000 Subject: [PATCH] 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 --- attic/archive.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/attic/archive.py b/attic/archive.py index d78ce4b85..d78a7fdb3 100644 --- a/attic/archive.py +++ b/attic/archive.py @@ -131,10 +131,10 @@ class Archive: self.name = name self.checkpoint_interval = checkpoint_interval self.numeric_owner = numeric_owner - self.items_buffer = CacheChunkBuffer(self.cache, self.key, self.stats) self.pipeline = DownloadPipeline(self.repository, self.key) - self.chunker = Chunker(WINDOW_SIZE, CHUNK_MASK, CHUNK_MIN, self.key.chunk_seed) 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: raise self.AlreadyExists(name) self.last_checkpoint = time.time()