[ 
https://issues.apache.org/jira/browse/HADOOP-17500?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17273945#comment-17273945
 ] 

Pedro Tôrres commented on HADOOP-17500:
---------------------------------------

Hi Steve,

Yes, we need to set the Content-MD5 headers in both PutObject and UploadPart 
operations:
[https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html] 
(the last note)
[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html] (the first 
note)
[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html#AmazonS3-UploadPart-request-header-ContentMD5]

It is important to notice that the hash calculation in the UploadPart operation 
should only consider the part being uploaded, not the entire file.

I intend to work on a patch for this issue, but it may take some time as this 
is my first time working with the Hadoop code-base.

Regarding the tests, I would appreciate your help.

> S3A doesn't calculate Content-MD5 on uploads
> --------------------------------------------
>
>                 Key: HADOOP-17500
>                 URL: https://issues.apache.org/jira/browse/HADOOP-17500
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs/s3
>            Reporter: Pedro Tôrres
>            Priority: Major
>
> Hadoop doesn't specify the Content-MD5 of an object when uploading it to an 
> S3 Bucket. This prevents uploads to buckets with Object Lock, that require 
> the Content-MD5 to be specified.
>  
> {code:java}
> com.amazonaws.services.s3.model.AmazonS3Exception: Content-MD5 HTTP header is 
> required for Put Part requests with Object Lock parameters (Service: Amazon 
> S3; Status Code: 400; Error Code: InvalidRequest; Request ID: 
> ****************; S3 Extended Request ID: 
> ****************************************************************************; 
> Proxy: null), S3 Extended Request ID: 
> ****************************************************************************
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1372)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
>       at 
> com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
>       at 
> com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
>       at 
> com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
>       at 
> com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5248)
>       at 
> com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5195)
>       at 
> com.amazonaws.services.s3.AmazonS3Client.doUploadPart(AmazonS3Client.java:3768)
>       at 
> com.amazonaws.services.s3.AmazonS3Client.uploadPart(AmazonS3Client.java:3753)
>       at 
> org.apache.hadoop.fs.s3a.S3AFileSystem.uploadPart(S3AFileSystem.java:2230)
>       at 
> org.apache.hadoop.fs.s3a.WriteOperationHelper.lambda$uploadPart$8(WriteOperationHelper.java:558)
>       at org.apache.hadoop.fs.s3a.Invoker.once(Invoker.java:110)
>       ... 15 more{code}
>  
> Similar to https://issues.apache.org/jira/browse/JCLOUDS-1549
> Related to https://issues.apache.org/jira/browse/HADOOP-13076



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to