mirror of
https://github.com/borgbackup/borg.git
synced 2026-06-19 22:48:59 -04:00
If `borg compact` was interrupted after deleting repository objects but before writing the updated chunk index, the still-existing cache/chunks.* kept claiming the deleted objects were present. A later `borg create` would trust that stale index, skip re-uploading the affected chunks and silently create an archive with dangling object references that extracts to zero bytes. Invalidate all cached chunk indexes via delete_chunkindex_cache() before the first object is deleted, so an interruption is conservative: the next client rebuilds the index from actual repository contents and re-uploads any deleted data. The post-deletion save_chunk_index() still writes a fresh, valid index. Add a regression test covering both compact paths (default and --stats) that interrupts compaction right before save_chunk_index() and verifies no cached chunk index survives and a later create+extract reproduces the original bytes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 3rd_party | ||
| _static | ||
| _templates | ||
| binaries | ||
| borg_theme/css | ||
| deployment | ||
| internals | ||
| man | ||
| misc | ||
| usage | ||
| authors.rst | ||
| book.rst | ||
| changes.rst | ||
| changes_0.x.rst | ||
| changes_1.x.rst | ||
| conf.py | ||
| deployment.rst | ||
| development.rst | ||
| faq.rst | ||
| global.rst.inc | ||
| index.rst | ||
| installation.rst | ||
| internals.rst | ||
| introduction.rst | ||
| Makefile | ||
| man_intro.rst | ||
| quickstart.rst | ||
| quickstart_example.rst.inc | ||
| support.rst | ||
| usage.rst | ||
| usage_general.rst.inc | ||