Conversation
hash.ChecksumMismatch now carries the requested algorithm (CRC32, CRC32C, SHA1, SHA256, CRC64NVME), and toAPIError renders it S3-style: The CRC32 you specified did not match the calculated checksum. instead of the generic "The provided 'x-amz-checksum' header does not match what was computed.", for all four mismatch construction sites (streaming reader, trailing-checksum decode, and both Checksum.Matches paths). Mirrors the wording already shipped for CompleteMultipartUpload in pgsty#225. Fixes pgsty#226
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.
Summary
PutObject/UploadPartchecksum mismatches currently return the genericThe provided 'x-amz-checksum' header does not match what was computed.This adds the algorithm name to the message, matching S3's wording (and the CompleteMultipartUpload behavior already aligned in #225):Changes
internal/hash:ChecksumMismatchgains anAlgorithmfield; all four construction sites fill it viaChecksumType.String()(streaming reader mismatch, trailing-checksum decode failure, and bothChecksum.Matchespaths).cmd/api-errors.go:toAPIErrorrenders the algorithm-specific message when present; unknown algorithms keep the generic table description as fallback.cmd/object-handlers-chunked-checksum_test.go: the wrong-CRC32 chunked case now also asserts the message (response body is parsed once — the previous shape consumed it in the code assertion first).Testing
go test ./cmd/ -run 'Checksum|Digest'— ok (21.7s)go test ./internal/hash/...— okFixes #226