浏览代码

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.
Thomas Waldmann 7 年之前
父节点
当前提交
5beaa5bd02
共有 1 个文件被更改,包括 10 次插入4 次删除
  1. 10 4
      borg/cache.py

+ 10 - 4
borg/cache.py

@@ -208,10 +208,16 @@ Chunk index:    {0.total_unique_chunks:20d} {0.total_chunks:20d}"""
                 if not data:
                     break
                 u.feed(data)
-                for path_hash, item in u:
-                    item[0] += 1
-                    # in the end, this takes about 240 Bytes per file
-                    self.files[path_hash] = msgpack.packb(item)
+                try:
+                    for path_hash, item in u:
+                        item[0] += 1
+                        # in the end, this takes about 240 Bytes per file
+                        self.files[path_hash] = msgpack.packb(item)
+                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