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

Ahmar Suhail commented on HADOOP-19527:
---------------------------------------

ok took me a few hours but I get it now. 

 

This happens when encryption is enabled (eg: SSE-KMS), because in that case the 
etag is not the md5 of the object content. When making a GET request, AAL does 
 
GetRequest.builder()
.s3Uri(this.objectKey.getS3URI())
.range(this.range)
.etag(this.objectKey.getEtag())
 
the etag comes from cached HeadObjectResponse. When you run the whole test 
suite, head object gets cached from a previous HEAD. Then in this test, the 
cached value gets used, but since with SSE-KMS the value will change every time 
the vectored object vectored_file.txt gets created, this will fail. 
 
When not using SSE-KMS, the etag is always the same, as it is just the md5 of 
the object content which never changes. 

> S3A: testVectoredReadAfterNormalRead() failing with 412 response from S3
> ------------------------------------------------------------------------
>
>                 Key: HADOOP-19527
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19527
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3
>    Affects Versions: 3.5.0, 3.4.2
>            Reporter: Steve Loughran
>            Assignee: Ahmar Suhail
>            Priority: Blocker
>
> This is surfacing on a bucket using versionid for change detection: block 
> reads are failing in the test 
> {{ITestS3AContractAnalyticsStreamVectoredRead.testVectoredReadAfterNormalRead()}}
> {code}
> Caused by: software.amazon.awssdk.services.s3.model.S3Exception: At least one 
> of the pre-conditions you specified did not hold (Service: S3, Status Code: 
> 412, Request ID: 0AN2EB8QXC75HH0T, Extended Request ID: 
> U5l/UnIF4n3NO1mrZVzS2vv72F3LgUoVJxR4XodUSaTWCerfjmmpH45CbFGKkTkfgfnykwzseGo=)
>         at 
> software.amazon.awssdk.services.s3.model.S3Exception$BuilderImpl.build(S3Exception.java:104)
> {code}
> * this is the normal readFully() call, before the vectored one
> * it worked last week
> * also found on branch-3.4 before the SDK update, so not an issue caused by 
> the SDK unless my maven repo is badly contaminated
> * seems unrelated to versioning -still there when disabled.
> * applies on unversioned s3 express store too.
> About the main way I could see this surface is if the test file is less than 
> the actual length of file created, so the GET is rejected for reading off the 
> end (the openfile passes in the length to save the HEAD)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to