You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(s3): release shipped segment blobs on DeleteBucket
A shipped catalog segment registers TWO blobs in the bucket's space: the
sealed CAR and its sharded-dag-index (both blob/added by SubmitShard). Hilt
refuses to delete a space that still holds registrations, so any bucket
that lived past the catalog seal age with a successful ship could never be
deleted: DeleteBucket returned BucketNotEmpty with no objects left.
Surfaced by promoting CompleteMultipartUpload/should_verify_final_composite_
checksum — the first conformance case long enough (~11s of commits) to ship
a segment before its teardown.
The index blob's digest was recorded nowhere, so ship now persists it:
SubmitShard returns the index digest, the flush func hands it to
MarkSegmentShipped, and ingot.segments gains an index_digest column
(00010). DeleteBucket quiesces the bucket's log first — joining any
in-flight ship, so a segment can't register its blobs after the release
pass has read the rows (on faster hosts the teardown lands exactly inside
the ship window) — then releases every sealed segment's CAR and every
shipped segment's index from the space before the hilt delete. Releases
are idempotent (removing an unregistered blob is a no-op), so
sealed-but-unshipped CARs are released defensively and retries are safe.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments