MCPcopy
hub / github.com/borgbackup/borg / check_object

Method check_object

src/borg/repository.py:301–318  ·  view source on GitHub ↗

Check if obj looks valid.

(obj)

Source from the content-addressed store, hash-verified

299 logger.error(f"Repo object {info.name} is corrupted: {msg}")
300
301 def check_object(obj):
302 """Check if obj looks valid."""
303 hdr_size = RepoObj.obj_header.size
304 obj_size = len(obj)
305 if obj_size >= hdr_size:
306 hdr = RepoObj.ObjHeader(*RepoObj.obj_header.unpack(obj[:hdr_size]))
307 meta = obj[hdr_size : hdr_size + hdr.meta_size]
308 if hdr.meta_size != len(meta):
309 log_error("metadata size incorrect.")
310 elif hdr.meta_hash != xxh64(meta).digest():
311 log_error("metadata does not match checksum.")
312 data = obj[hdr_size + hdr.meta_size : hdr_size + hdr.meta_size + hdr.data_size]
313 if hdr.data_size != len(data):
314 log_error("data size incorrect.")
315 elif hdr.data_hash != xxh64(data).digest():
316 log_error("data does not match checksum.")
317 else:
318 log_error("too small.")
319
320 # TODO: progress indicator, ...
321 partial = bool(max_duration)

Callers

nothing calls this directly

Calls 2

unpackMethod · 0.80
digestMethod · 0.80

Tested by

no test coverage detected