Kaynağa Gözat

ArchiveChecker: use MAX_LOAD_FACTOR constant

Marian Beermann 8 yıl önce
ebeveyn
işleme
be3616b6b3
2 değiştirilmiş dosya ile 5 ekleme ve 4 silme
  1. 3 2
      borg/archive.py
  2. 2 2
      borg/testsuite/hashindex.py

+ 3 - 2
borg/archive.py

@@ -853,8 +853,9 @@ class ArchiveChecker:
         """Fetch a list of all object keys from repository
         """
         # Explicitly set the initial hash table capacity to avoid performance issues
-        # due to hash table "resonance"
-        capacity = int(len(self.repository) * 1.35 + 1)  # > len * 1.0 / HASH_MAX_LOAD (see _hashindex.c)
+        # due to hash table "resonance".
+        # Since reconstruction of archive items can add some new chunks, add 10 % headroom
+        capacity = int(len(self.repository) / ChunkIndex.MAX_LOAD_FACTOR * 1.1)
         self.chunks = ChunkIndex(capacity)
         marker = None
         while True:

+ 2 - 2
borg/testsuite/hashindex.py

@@ -279,5 +279,5 @@ def test_nsindex_segment_limit():
 
 
 def test_max_load_factor():
-    assert NSIndex.MAX_LOAD_FACTOR < 1
-    assert ChunkIndex.MAX_LOAD_FACTOR < 1
+    assert NSIndex.MAX_LOAD_FACTOR < 1.0
+    assert ChunkIndex.MAX_LOAD_FACTOR < 1.0