mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-27 02:08:54 +00:00
cache sync: initialize master index to known capacity
This commit is contained in:
parent
740898d83b
commit
9f8b967a6f
1 changed files with 5 additions and 2 deletions
|
@ -603,6 +603,9 @@ def create_master_idx(chunk_idx):
|
|||
# deallocates old hashindex, creates empty hashindex:
|
||||
chunk_idx.clear()
|
||||
cleanup_outdated(cached_ids - archive_ids)
|
||||
# Explicitly set the initial hash table capacity to avoid performance issues
|
||||
# due to hash table "resonance".
|
||||
master_index_capacity = int(len(self.repository) / ChunkIndex.MAX_LOAD_FACTOR)
|
||||
if archive_ids:
|
||||
chunk_idx = None
|
||||
if self.progress:
|
||||
|
@ -630,7 +633,7 @@ def create_master_idx(chunk_idx):
|
|||
# Do not make this an else branch; the FileIntegrityError exception handler
|
||||
# above can remove *archive_id* from *cached_ids*.
|
||||
logger.info('Fetching and building archive index for %s ...', archive_name)
|
||||
archive_chunk_idx = ChunkIndex()
|
||||
archive_chunk_idx = ChunkIndex(master_index_capacity)
|
||||
fetch_and_build_idx(archive_id, repository, self.key, archive_chunk_idx)
|
||||
logger.info("Merging into master chunks index ...")
|
||||
if chunk_idx is None:
|
||||
|
@ -641,7 +644,7 @@ def create_master_idx(chunk_idx):
|
|||
else:
|
||||
chunk_idx.merge(archive_chunk_idx)
|
||||
else:
|
||||
chunk_idx = chunk_idx or ChunkIndex()
|
||||
chunk_idx = chunk_idx or ChunkIndex(master_index_capacity)
|
||||
logger.info('Fetching archive index for %s ...', archive_name)
|
||||
fetch_and_build_idx(archive_id, repository, self.key, chunk_idx)
|
||||
if self.progress:
|
||||
|
|
Loading…
Reference in a new issue