From a7809429b3ab6e714385880756d5baaa1ca4ffe6 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 29 Oct 2023 01:07:16 +0200 Subject: [PATCH] check --repair: recreate shadow index, see #6687 before this fix, borg check --repair just created an empty shadow index, which can lead to incomplete entries if entries are added later. and such incomplete (but present) entries can lead to compact_segments() resurrecting old PUTs by accidentally dropping related DELs. --- src/borg/repository.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/borg/repository.py b/src/borg/repository.py index 9c0284831..f02224e86 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -917,6 +917,7 @@ class Repository: s, _ = self.index[key] self.compact[s] += size self.segments[s] -= 1 + self.shadow_index.setdefault(key, []).append(s) except KeyError: pass self.index[key] = segment, offset @@ -935,6 +936,7 @@ class Repository: self.segments[s] -= 1 size = self.io.read(s, offset, key, read_data=False) self.compact[s] += size + self.shadow_index.setdefault(key, []).append(s) elif tag == TAG_COMMIT: continue else: