mirror of
https://github.com/borgbackup/borg.git
synced 2025-03-10 06:03:38 +00:00
Merge pull request #7897 from ThomasWaldmann/check-fixes-shadow-index-1.2
check --repair fixes shadow_index (1.2-maint)
This commit is contained in:
commit
55ee4e2d28
2 changed files with 11 additions and 0 deletions
|
@ -917,6 +917,7 @@ class Repository:
|
||||||
s, _ = self.index[key]
|
s, _ = self.index[key]
|
||||||
self.compact[s] += size
|
self.compact[s] += size
|
||||||
self.segments[s] -= 1
|
self.segments[s] -= 1
|
||||||
|
self.shadow_index.setdefault(key, []).append(s)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
self.index[key] = segment, offset
|
self.index[key] = segment, offset
|
||||||
|
@ -935,6 +936,7 @@ class Repository:
|
||||||
self.segments[s] -= 1
|
self.segments[s] -= 1
|
||||||
size = self.io.read(s, offset, key, read_data=False)
|
size = self.io.read(s, offset, key, read_data=False)
|
||||||
self.compact[s] += size
|
self.compact[s] += size
|
||||||
|
self.shadow_index.setdefault(key, []).append(s)
|
||||||
elif tag == TAG_COMMIT:
|
elif tag == TAG_COMMIT:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -826,6 +826,15 @@ class RepositoryHintsTestCase(RepositoryTestCaseBase):
|
||||||
self.assert_equal(compact_expected, self.repository.compact)
|
self.assert_equal(compact_expected, self.repository.compact)
|
||||||
del self.repository.segments[2] # ignore the segment created by put(H(42), ...)
|
del self.repository.segments[2] # ignore the segment created by put(H(42), ...)
|
||||||
self.assert_equal(segments_expected, self.repository.segments)
|
self.assert_equal(segments_expected, self.repository.segments)
|
||||||
|
self.reopen()
|
||||||
|
self.assert_equal(self.repository.check(repair=True), True)
|
||||||
|
self.reopen()
|
||||||
|
self.repository.put(H(42), b'foobar') # this will call prepare_txn() and load the hints data
|
||||||
|
self.assert_equal(shadow_index_expected, self.repository.shadow_index)
|
||||||
|
# sizes do not match, with vs. without header?
|
||||||
|
# self.assert_equal(compact_expected, self.repository.compact)
|
||||||
|
del self.repository.segments[2] # ignore the segment created by put(H(42), ...)
|
||||||
|
self.assert_equal(segments_expected, self.repository.segments)
|
||||||
|
|
||||||
def test_hints_behaviour(self):
|
def test_hints_behaviour(self):
|
||||||
self.repository.put(H(0), b'data')
|
self.repository.put(H(0), b'data')
|
||||||
|
|
Loading…
Add table
Reference in a new issue