1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-01 12:09:10 +00:00

seen_chunk: do not use .refcount

If we have an entry for a chunk id in the ChunkIndex,
it means that this chunk exists in the repository.

The code was a bit over-complicated and used entry.refcount
only to detect whether .get(id, default) actually got something
from the ChunkIndex or used the provided default value.

The code does the same now, but in a simpler way.
Additionally, it checks for size consistency if a size is
provided by the caller and a size is already present in
the entry.
This commit is contained in:
Thomas Waldmann 2024-11-01 21:05:49 +01:00
parent 5da1ff166f
commit de1b7e0581
No known key found for this signature in database
GPG key ID: 243ACFA951F78E01

View file

@ -719,14 +719,17 @@ def chunks(self):
return self._chunks
def seen_chunk(self, id, size=None):
entry = self.chunks.get(id, ChunkIndexEntry(0, None))
if entry.refcount and size is not None:
assert isinstance(entry.size, int)
if not entry.size:
entry = self.chunks.get(id)
entry_exists = entry is not None
if entry_exists and size is not None:
if entry.size == 0:
# AdHocWithFilesCache:
# Here *size* is used to update the chunk's size information, which will be zero for existing chunks.
self.chunks[id] = entry._replace(size=size)
return entry.refcount != 0
else:
# in case we already have a size information in the entry, check consistency:
assert size == entry.size
return entry_exists
def reuse_chunk(self, id, size, stats):
assert isinstance(size, int) and size > 0