Explorar o código

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...
Thomas Waldmann %!s(int64=5) %!d(string=hai) anos
pai
achega
d5a1979d87
Modificáronse 1 ficheiros con 7 adicións e 1 borrados
  1. 7 1
      src/borg/repository.py

+ 7 - 1
src/borg/repository.py

@@ -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)