commit-time free space calc: ignore bad compact map entries, fixes #4796

at least it does not crash now when committing.

the question why the compact map points to a missing segment file
is not answered yet, there might be another problem...
This commit is contained in:
Thomas Waldmann 2019-11-04 18:28:50 +01:00
parent 0b8c9b236e
commit d5a1979d87
1 changed files with 7 additions and 1 deletions

View File

@ -669,7 +669,13 @@ class Repository:
if len(self.compact) < 10:
# This is mostly for the test suite to avoid overestimated free space needs. This can be annoying
# if TMP is a small-ish tmpfs.
compact_working_space = sum(self.io.segment_size(segment) - free for segment, free in self.compact.items())
compact_working_space = 0
for segment, free in self.compact.items():
try:
compact_working_space += self.io.segment_size(segment) - free
except FileNotFoundError:
# looks like self.compact is referring to a non-existent segment file, ignore it.
pass
logger.debug('check_free_space: few segments, not requiring a full free segment')
compact_working_space = min(compact_working_space, full_segment_size)
logger.debug('check_free_space: calculated working space for compact as %d bytes', compact_working_space)