From 4eadb59c10d3d9afeb1ce569119423532060f431 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 16 Aug 2017 01:52:33 +0200 Subject: [PATCH] ignore corrupt files cache, fixes #2939 ignore the files cache when corrupt and emit a warning message so the users notices that there is a problem. (cherry picked from commit 5beaa5bd025e27e1981607ffece36106d6027418) --- src/borg/cache.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/borg/cache.py b/src/borg/cache.py index c1c703326..b1b440ac0 100644 --- a/src/borg/cache.py +++ b/src/borg/cache.py @@ -503,10 +503,16 @@ class LocalCache(CacheStatsMixin): if not data: break u.feed(data) - for path_hash, item in u: - entry = FileCacheEntry(*item) - # in the end, this takes about 240 Bytes per file - self.files[path_hash] = msgpack.packb(entry._replace(age=entry.age + 1)) + try: + for path_hash, item in u: + entry = FileCacheEntry(*item) + # in the end, this takes about 240 Bytes per file + self.files[path_hash] = msgpack.packb(entry._replace(age=entry.age + 1)) + except (TypeError, ValueError) as exc: + logger.warning('The files cache seems corrupt, ignoring it. ' + 'Expect lower performance. [%s]' % str(exc)) + self.files = {} + return def begin_txn(self): # Initialize transaction snapshot