Repository navigation
fix(TC-1354): size S3 block deletes with HeadObject - #337
Merged
Merged
Conversation
S3BlockStore::remove called GetObjectAttributes without an attribute list, which S3 and MinIO reject, so every S3 block delete errored. Use HeadObject for the size and existence check, as #336 does. A missing object is still Ok(None), and the quota drops by the stored length. Adds a MinIO-backed test run in the at-rest harness CI job.
Contributor
Author
|
APPROVE: see TC-1354 (head |
samgbafa
added a commit
that referenced
this pull request
Oct 17, 2026
#337 fixed S3 remove sizing with HeadObject; this branch already sizes and deletes through HeadObject with generation keys, operation locks and confirmed-absence refunds, so keep its remove and drop main's now-unused helpers. Main's TC-1354 MinIO test uses generation 0 (the bare key).
This was referenced Oct 17, 2026
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.
Linear: TC-1354
Problem
S3BlockStore::removecalledGetObjectAttributeswithout an attribute list. S3 requiresx-amz-object-attributes, and MinIO rejects the call withInvalidArgument: Invalid attribute name specified., so every S3 block delete returned an error.No code on main or in the released node calls
removetoday (kv/delis logical and leaves blobs in place), so this does not affect production now. It matters as soon as something callsremove, such as #336 or a later cleanup.Change
removenow gets the size and checks existence withHeadObject, then deletes. A missing object still returnsOk(None). The space size drops by the object's stored length.object_sizeanddeletehelpers match feat(TC-887): seal KV blocks in the S3 store (S3c, stacked on #333) #336's, so the TC-887 stack rebases with no logic conflict.tinycloud-node-server/tests/s3_block_store.rsruns against the at-rest harness's native MinIO. It is#[ignore]d by default, and theat-rest harnessCI job runs it with the harness env loaded.Evidence (local, native MinIO RELEASE.2025-09-07T16-13-09Z, no Docker)
951d2f5:remove_deletes_the_block_and_releases_its_sizefails withInvalidArgument: Invalid attribute name specified.Nonewithout changing the size.cargo test -p tinycloud-node --lib storage::passes,cargo fmt --all -- --checkis clean, andRUSTFLAGS=-Dwarnings cargo clippy -p tinycloud-node --all-targetsis clean.