Error message: Unable to parse ExceptionName: InvalidRequest Message: You must specify at least one part #11345
|
While setting up an Apache Doris snapshot repository using Apache Ozone 2.2.1 as the S3-compatible object storage backend, I am encountering an issue during the repository clone/restore process. The issue occurs specifically when Doris uploads larger snapshot files to the Ozone S3 bucket. Files smaller than approximately 45 MB are uploaded successfully using a normal PutObject request. However, files larger than this threshold are uploaded using multipart upload. InvalidRequest You must specify at least one part HTTP 400 As a result, the snapshot repository operation fails even though the individual multipart upload parts appear to have been successfully uploaded. I came across the following Apache Ozone JIRA issue, which appears to be very similar to the behavior I am experiencing: https://issues.apache.org/jira/browse/HDDS-14760 From the JIRA discussion, it appears that the underlying multipart-upload issue has been fixed through an upcoming PR. However, I am unable to determine which Apache Ozone release/version contains this fix.
|
Replies: 1 comment 1 reply
|
Yes, that's the one, and the fix isn't in any release yet.
|
Yes, that's the one, and the fix isn't in any release yet.
CompleteMultipartUploadfrom the AWS C++ SDK, and Doris' BE talks to S3 through that SDK (Aws::S3::S3Clientinbe/src/util/s3_util.cpp). Your logs show the same pattern:ozone_s3g.loghas both parts of each upload asSUCCESS, andbe.logshows onlyCompleteMultipartUploadfailing. The cause, from the fix: the SDK sendsCompleteMultipartUploadwithExpect: 100-continue, so the body only arrives after the gateway answers100 Continue, and Ozone's S3 gateway decided the body was empty by checkingInputStream.available() == 0, which is 0 when nothing has arrived yet. That's also why only the larger …