[ 
https://issues.apache.org/jira/browse/HADOOP-14467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aaron Fabbri updated HADOOP-14467:
----------------------------------
    Attachment: HADOOP-14467-HADOOP-13345.001.patch

Attaching v1 patch that just adds a simple integration test that exercises this.

Also created debugging page on confluence wiki 
[here|https://cwiki.apache.org/confluence/display/HADOOP/S3A%3A+FileNotFound+Exception+on+Read].

Next steps:  (1) Change exception message.  (2) Link to cwiki from other hadoop 
wiki, and site docs.

Current stack trace (for google)
{noformat}
java.io.FileNotFoundException: Reopen at position 0 on 
s3a://bucket-name/test/some-file: 
com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not 
exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request 
ID: 58552EC03A3499D7), S3 Extended Request ID: 
thYjg0cDPGceq5M3n5T2nLmRDfFnoAeyiVMx8rOvYv/IHDPZiBnL5oAOPjdw44rQgzngDk4wELY=
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1258)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1030)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
        at 
com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
        at 
com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4221)
        at 
com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4168)
        at 
com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1378)
        at 
org.apache.hadoop.fs.s3a.S3AInputStream.reopen(S3AInputStream.java:160)
        at 
org.apache.hadoop.fs.s3a.S3AInputStream.onReadFailure(S3AInputStream.java:350)
        at org.apache.hadoop.fs.s3a.S3AInputStream.read(S3AInputStream.java:323)
        at java.io.FilterInputStream.read(FilterInputStream.java:83)
{noformat}

> S3Guard: Improve FNFE message when opening a stream
> ---------------------------------------------------
>
>                 Key: HADOOP-14467
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14467
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3
>            Reporter: Aaron Fabbri
>            Assignee: Aaron Fabbri
>            Priority: Minor
>         Attachments: HADOOP-14467-HADOOP-13345.001.patch
>
>
> Following up on the [discussion on 
> HADOOP-13345|https://issues.apache.org/jira/browse/HADOOP-13345?focusedCommentId=16030050&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16030050],
>  because S3Guard can serve getFileStatus() from the MetadataStore without 
> doing a HEAD on S3, a FileNotFound error on a file due to S3 GET 
> inconsistency does not happen on open(), but on the first read of the stream. 
>  We may add retries to the S3 client in the future, but for now we should 
> have an exception message that indicates this may be due to inconsistency 
> (assuming it isn't a more straightforward case like someone deleting the 
> object out from under you).
> This is expected to be a rare case, since the S3 service is now mostly 
> consistent for GET.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to