Skip to content

fix(s3): complete CopyObject checksum support - #5178

Merged
cxymds merged 1 commit into
mainfrom
cxymds/issue-1466-copy-checksums
Jul 24, 2026
Merged

fix(s3): complete CopyObject checksum support#5178
cxymds merged 1 commit into
mainfrom
cxymds/issue-1466-copy-checksums

Conversation

@cxymds

@cxymds cxymds commented Jul 24, 2026

Copy link
Copy Markdown
Member

Related Issues

Refs rustfs/backlog#1466.

Summary of Changes

  • pin s3s to 8136db4ac8253c0ccfd86f8216e00e0235747757, which exposes the additional CopyObject checksum result fields
  • support CRC32, CRC32C, CRC64NVME, SHA1, SHA256, MD5, SHA512, XXHASH3, XXHASH64, and XXHASH128 in CopyObject responses and persisted destination metadata
  • preserve a source checksum when no replacement algorithm is requested, including multipart COMPOSITE checksum semantics
  • compute and persist only the explicitly requested replacement algorithm
  • reject unknown algorithms with InvalidArgument before source lookup, locking, or destination mutation
  • expand CopyObject checksum E2E coverage and update the compatibility and suite inventory documentation

Verification

  • make pre-commit
  • cargo fmt --all --check
  • cargo clippy -p rustfs-rio --all-targets -- -D warnings
  • cargo clippy -p rustfs --all-targets -- -D warnings
  • cargo clippy -p e2e_test --all-targets -- -D warnings
  • cargo nextest run -p rustfs classify_response_checksums_splits_typed_and_extra (1 passed)
  • cargo nextest run -p e2e_test copy_object_checksum_test (7 passed)
  • make pre-pr guard, workspace clippy, script-test, and workspace nextest phases (10,184 passed; 139 skipped)
  • the final cargo test --all --doc phase was intentionally skipped per maintainer direction

Impact

CopyObject now returns and persists all ten supported checksum algorithms consistently. Requests for unsupported checksum algorithms fail with HTTP 400 without modifying an existing destination object. No configuration or migration is required.

The implementation does not by itself satisfy the release-boundary acceptance criterion in rustfs/backlog#1466. That issue should remain open until a RustFS release containing this change is published and its release notes identify the first compatible version.

Additional Notes

The change was independently reviewed against correctness, security, performance, test coverage, maintainability, compatibility, and simplicity roles. The multipart checksum type and validation-precedence findings from that review are covered by regression tests.

@github-actions

Copy link
Copy Markdown
Contributor

CLA requirements are satisfied for this pull request.

@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@cxymds
cxymds merged commit 9eaf5fc into main Jul 24, 2026
26 checks passed
@cxymds
cxymds deleted the cxymds/issue-1466-copy-checksums branch July 24, 2026 08:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant