Skip to content

Regression with composeObject in 8.0.3 #1374

@SPodjasek

Description

@SPodjasek

Change introduced in #1334 is causing a regression with composeObject function in version 8.0.3.

PR dropped parsing of response body and relies only on header to get part ETag. When x-amz-copy-source: is used with multipart uploads, minio doesn't return etag in header but only in response body XML (as per S3 specification). Previous version relied on parsing body and this was changed with commit shown below:

40724aad4f917a0f1b70e8af73175382fdfab854

In result there's no ETag values related to parts uploaded and client sends following request to server:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Part>
    <PartNumber>1</PartNumber>
    <ETag/>
  </Part>
  <Part>
    <PartNumber>2</PartNumber>
    <ETag/>
  </Part>
  <Part>
    <PartNumber>3</PartNumber>
    <ETag/>
  </Part>
  <Part>
    <PartNumber>4</PartNumber>
    <ETag/>
  </Part>
</CompleteMultipartUpload>

resulting in 400 Bad Request response:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>InvalidPart</Code>
  <Message>One or more of the specified parts could not be found.  The part may not have been uploaded, or the specified entity tag may not match the part&#39;s entity
tag.</Message>
  <Key>kQvNbbSJG5</Key>
  <BucketName>...</BucketName>
  <Resource>/.../kQvNbbSJG5</Resource>
  <RequestId>...</RequestId>
  <HostId>...</HostId>
</Error>

Downgrading client to version 8.0.2 fixes this issue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions