Skip to content

PutObject fails with chunked encoding and checksumType #107

Description

@cbornet

Using chunked encoding and setting x-amz-sdk-checksum-algorithm: CRC32 makes PutObject reject the upload with The provided 'x-amz-checksum' header does not match what was computed.

Expected Behavior

It should be possible to use chunked encoding with x-amz-sdk-checksum-algorithm specified.
It works on S3.
Disabling chunked encoding on the SDK client fixes it.

Current Behavior

We get an exception The provided 'x-amz-checksum' header does not match what was computed.

Possible Solution

AI-generated hypothesis:

MinIO appears to validate the x-amz-checksum-crc32 header value by computing CRC32 over the raw chunked wire bytes (which include the chunk-size lines 7\r\n, 0\r\n, etc.) rather than over the decoded object content bytes. This produces a different CRC32 value, causing the rejection.

Steps to Reproduce (for bugs)

Clone reproducer in Java at https://github.com/cbornet/silo-checksumtype-reproducer

git clone https://github.com/cbornet/silo-checksumtype-reproducer.git
cd silo-checksumtype-reproducer

Run tests:

mvn test

Context

I want to use CRC32 checksums with the Java SDK which enables chunked encoding by default.

Regression

No

Your Environment

  • Version used (silo --version): RELEASE.2026-08-06
  • Server setup and configuration: see unit test
  • Operating System and version (uname -a): Darwin Christophe-Bornet-GTHPGYWQFR 24.6.0 Darwin Kernel Version 24.6.0: Tue Jul 21 20:50:11 PDT 2026; root:xnu-11417.140.69.711.44~1/RELEASE_ARM64_T6041 arm64

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions