ADBM-3347: Fix backup.manifest.copy handling in repo-push - #110
ADBM-3347: Fix backup.manifest.copy handling in repo-push#110hilltracer wants to merge 2 commits into
Conversation
Backup may be interrupted after backup.manifest.copy is written but before backup.manifest is created. In this state, missing main manifest combined with existing copy marks backup as incomplete and resumable. Operations modifying backup must therefore not fall back to manifest copy. Otherwise, repo-push could load resumable manifest, create main manifest, and make incomplete backup appear complete. There is also another issue with blocking (#99 (comment)), but it is beyond the scope of this patch.
See this message for more details: #99 (comment)
See this message for more details: #99 (comment) |
|
The problem on CI with Debian build |
repo-push updated only backup.manifest and left backup.manifest.copy unchanged,
although both manifests must represent the same state for completed backup.
Before modifying manifest, repo-push also loaded it with fallback to
backup.manifest.copy. As a result, running repo-push against resumable backups
could create main manifest and make incomplete backups appear complete.
Load only main manifest and remove fallback to its copy. Save updated manifest
to backup.manifest.copy first, then copy it to backup.manifest, following
backup completion semantics.
Persist calculated checksumRepoSha1 when updating custom files.
Extend test coverage and remove unused manifest fixture from compressed push
test.
Ticket: ADBM-3347