[ https://issues.apache.org/jira/browse/HADOOP-18310?focusedWorklogId=783530&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-783530 ]
ASF GitHub Bot logged work on HADOOP-18310: ------------------------------------------- Author: ASF GitHub Bot Created on: 21/Jun/22 19:00 Start Date: 21/Jun/22 19:00 Worklog Time Spent: 10m Work Description: taklwu opened a new pull request, #4483: URL: https://github.com/apache/hadoop/pull/4483 ### Description of PR Add option and make 400 bad request retryable, added `fs.s3a.retry.failOnAwsBadRequest` and default to `true` such that it's acting the same behavior without turning it on. ### How was this patch tested? Add a new unit test. ### For code changes: - [X] Does the title or this PR starts with the corresponding JIRA issue id (e.g. 'HADOOP-17799. Your PR title ...')? - [ ] Object storage: have the integration tests been executed and the endpoint declared according to the connector-specific documentation? - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? - [ ] If applicable, have you updated the `LICENSE`, `LICENSE-binary`, `NOTICE-binary` files? Issue Time Tracking ------------------- Worklog Id: (was: 783530) Remaining Estimate: 0h Time Spent: 10m > Add option and make 400 bad request retryable > --------------------------------------------- > > Key: HADOOP-18310 > URL: https://issues.apache.org/jira/browse/HADOOP-18310 > Project: Hadoop Common > Issue Type: Bug > Components: fs/s3 > Affects Versions: 3.3.4 > Reporter: Tak-Lon (Stephen) Wu > Priority: Major > Time Spent: 10m > Remaining Estimate: 0h > > When one is using a customized credential provider via > fs.s3a.aws.credentials.provider, e.g. > org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider, when the provided > credential by this pluggable provider is expired and return an error code of > 400 as bad request exception. > Here, the current S3ARetryPolicy will fail immediately and does not retry on > the S3A level. > Our recent use case in HBase found this use case could lead to a Region > Server got immediate abandoned from this Exception without retry, when the > file system is trying open or S3AInputStream is trying to reopen the file. > especially the S3AInputStream use cases, we cannot find a good way to retry > outside of the file system semantic (because if a ongoing stream is failing > currently it's considered as irreparable state), and thus we come up with > this optional flag for retrying in S3A. > {code} > Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: The provided > token has expired. (Service: Amazon S3; Status Code: 400; Error Code: > ExpiredToken; Request ID: XYZ; S3 Extended Request ID: ABC; Proxy: null), S3 > Extended Request ID: 123 > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1862) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1415) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1384) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1154) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:811) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:779) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:753) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:713) > at > com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:695) > at > com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:559) > at > com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:539) > at > com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5453) > at > com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5400) > at > com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1524) > at > org.apache.hadoop.fs.s3a.S3AFileSystem$InputStreamCallbacksImpl.getObject(S3AFileSystem.java:1506) > at > org.apache.hadoop.fs.s3a.S3AInputStream.lambda$reopen$0(S3AInputStream.java:217) > at org.apache.hadoop.fs.s3a.Invoker.once(Invoker.java:117) > ... 35 more > {code} -- This message was sent by Atlassian Jira (v8.20.7#820007) --------------------------------------------------------------------- To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org