From df11a67f960cc0c43edb0bc138fc17b1aed3b0bb Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 18 Jan 2021 21:26:01 +0100 Subject: [PATCH] fix updating shadow_index also in put The shadow_index should be in same state after both of these sequences (let's assume that A is not in repo yet for simplicity, but it does not matter): a) explicit delete: put(A), delete(A), put(A), resulting in: PUT A, DEL A, PUT A repo contents b) implicit delete: put(A), put(A), resulting in: PUT A, DEL A, PUT A repo contents --- src/borg/repository.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/borg/repository.py b/src/borg/repository.py index 0fa2f05d9..388b3e3ca 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -1167,11 +1167,11 @@ class Repository: segment, offset = self.index.pop(id) except KeyError: raise self.ObjectNotFound(id, self.path) from None - self.shadow_index.setdefault(id, []).append(segment) self._delete(id, segment, offset) def _delete(self, id, segment, offset): # common code used by put and delete + self.shadow_index.setdefault(id, []).append(segment) self.segments[segment] -= 1 size = self.io.read(segment, offset, id, read_data=False) self.storage_quota_use -= size