Conversation
Signed-off-by: Konstantin Morozov <just.morozov.k@gmail.com>
Signed-off-by: Konstantin Morozov <just.morozov.k@gmail.com>
Signed-off-by: Konstantin Morozov <just.morozov.k@gmail.com>
Signed-off-by: Konstantin Morozov <just.morozov.k@gmail.com>
k-morozov
marked this pull request as ready for review
September 24, 2026 15:50
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
BACKUPof a table on a CAS to anS3destination that shares the pool's endpoint failed outright, and the code path that failed would have silently corrupted the backup had it not failed.BackupWriterS3::copyFileFromDiskasksS3to copy the source object server-side. That assumes the file is that object, whole, from byte 0. On a CAS disk neither half holds:A small per-part file (
checksums.txt,count.txt,columns.txt, ...) is an inline manifest entry with no object of its own.getStorageObjectsreturns a sized placeholder with an empty remote key, deliberately poisoned so a reader that bypasses the read path fails loudly rather than reading someone else's bytes. The copy passed that empty key toCopyObject, so everyBACKUPdied withInvalid argument- these files exist in every part.A blob object is
[envelope][payload]and the payload is the file.BlobLocationcarries the payload offset, butgetStorageObjectsreturns only key and length andgetBlobPathkeeps only the key, so the copy started at byte 0 and pulled the envelope into the backup.RESTOREthen failed.The first failure masked the second:
checksums.txtaborted the backup before any blob corruptioncould surface. Fixing only the empty key would have turned a loud failure into backups that report
success and cannot be restored.
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Fixed
BACKUPof a table on a CAS to anS3destination on the same endpoint.Documentation entry for user-facing changes
Adds
docs/en/antalya/cas/operations/backup.mddescribing howBACKUP/RESTOREbehave on a content-addressed disk, and links it from the CAS index and roadmap.CI/CD Options
Exclude tests:
Regression jobs to run: