Bablu Raul created HDDS-17554:
---------------------------------
Summary: CompleteMultipartUpload accepts duplicate part numbers
and creates an incomplete object
Key: HDDS-17554
URL: https://issues.apache.org/jira/browse/HDDS-17554
Project: Apache Ozone
Issue Type: Bug
Components: S3
Reporter: Bablu Raul
The Ozone S3 Gateway accepts a {{CompleteMultipartUpload}} request containing
duplicate part numbers and successfully completes the upload instead of
rejecting the invalid part sequence.
When completing a multipart upload, the client must provide a valid sequence of
part numbers and their corresponding ETags. The gateway should validate the
supplied parts before committing the object.
During testing, two parts of 5 MiB each were uploaded successfully, and
{{ListParts}} confirmed that both parts were present. The completion request
then specified part number {{1}} twice ({{{}[1,1]{}}}), using the same ETag for
both entries.
The gateway returned a successful response, but the resulting object contained
only 5 MiB instead of the expected 10 MiB. {{HeadObject}} reported
{{ContentLength: 5242880}} and {{{}PartsCount: 2{}}}, and {{GetObject}}
returned only 5 MiB of data.
This behavior indicates that duplicate part numbers are not properly validated
during multipart upload completion, potentially resulting in incomplete objects
despite a successful API response.
h2. Steps to Reproduce
# Initiate a multipart upload.
# Upload two parts of 5 MiB each using part numbers 1 and 2.
# Verify that both parts are present using {{{}ListParts{}}}.
# Invoke {{CompleteMultipartUpload}} with the following part list, using the
ETag of part 1 for both entries:
{code:java}
{ "Parts": [ { "ETag": "<part-1-etag>", "PartNumber": 1 }, { "ETag":
"<part-1-etag>", "PartNumber": 1 } ] }{code}
# Verify the completion response and inspect the object using {{HeadObject}}
and {{{}GetObject{}}}.
h2. Actual Result
The gateway accepts the duplicate part-number sequence and returns a successful
completion response. However, the resulting object is only 5 MiB, although two
5 MiB parts were uploaded.
{{HeadObject}} reports {{ContentLength: 5242880}} and {{{}PartsCount: 2{}}},
while {{GetObject}} returns only 5,242,880 bytes.
h2. Expected Result
The gateway should reject a {{CompleteMultipartUpload}} request containing
duplicate part numbers with an appropriate S3 error response instead of
successfully completing the upload.
Valid multipart completion requests with unique, ascending part numbers should
continue to work as expected.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]