From f7f95ae731e0b845758daf0a92f0aa033fcd6a5b Mon Sep 17 00:00:00 2001 From: Marian Beermann Date: Fri, 20 May 2016 02:01:07 +0200 Subject: [PATCH] RepositoryCache: don't cache large objects avoids excessive cache repository disk usage --- borg/remote.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/borg/remote.py b/borg/remote.py index 6848784f1..5662a8dbc 100644 --- a/borg/remote.py +++ b/borg/remote.py @@ -414,6 +414,9 @@ class RepositoryCache(RepositoryNoCache): Caches Repository GET operations using a local temporary Repository. """ + # maximum object size that will be cached, 64 kiB. + THRESHOLD = 2**16 + def __init__(self, repository): super().__init__(repository) tmppath = tempfile.mkdtemp(prefix='borg-tmp') @@ -434,7 +437,8 @@ class RepositoryCache(RepositoryNoCache): except Repository.ObjectNotFound: for key_, data in repository_iterator: if key_ == key: - self.caching_repo.put(key, data) + if len(data) <= self.THRESHOLD: + self.caching_repo.put(key, data) yield data break # Consume any pending requests