mirror of
https://github.com/borgbackup/borg.git
synced 2025-02-24 15:12:00 +00:00
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.
This commit is contained in:
parent
7892e4212b
commit
57f3dd1dae
1 changed files with 2 additions and 0 deletions
|
@ -963,6 +963,7 @@ def _update_index(self, segment, objects, report=None):
|
||||||
in_index = self.index[key]
|
in_index = self.index[key]
|
||||||
self.compact[in_index.segment] += header_size(tag) + size
|
self.compact[in_index.segment] += header_size(tag) + size
|
||||||
self.segments[in_index.segment] -= 1
|
self.segments[in_index.segment] -= 1
|
||||||
|
self.shadow_index.setdefault(key, []).append(in_index.segment)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
self.index[key] = NSIndexEntry(segment, offset, size)
|
self.index[key] = NSIndexEntry(segment, offset, size)
|
||||||
|
@ -980,6 +981,7 @@ def _update_index(self, segment, objects, report=None):
|
||||||
# is already gone, then it was already compacted.
|
# is already gone, then it was already compacted.
|
||||||
self.segments[in_index.segment] -= 1
|
self.segments[in_index.segment] -= 1
|
||||||
self.compact[in_index.segment] += header_size(tag) + in_index.size
|
self.compact[in_index.segment] += header_size(tag) + in_index.size
|
||||||
|
self.shadow_index.setdefault(key, []).append(in_index.segment)
|
||||||
elif tag == TAG_COMMIT:
|
elif tag == TAG_COMMIT:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue