This is an automated email from the ASF dual-hosted git repository. stevel pushed a commit to branch branch-3.3 in repository https://gitbox.apache.org/repos/asf/hadoop.git
commit a8d7acf1a849bef221127a7fb223e30fb7e82d21 Author: Petre Bogdan Stolojan <[email protected]> AuthorDate: Mon Oct 4 20:58:22 2021 +0100 HADOOP-17951. Improve S3A checking of S3 Access Point existence (#3516) Follow-on to HADOOP-17198. Support S3 Access Points Contributed by Bogdan Stolojan Change-Id: I0932476c64e1967eb0cb3e0f00060fac5d2bae72 --- .../src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java | 4 +++- .../main/java/org/apache/hadoop/fs/s3a/impl/InternalConstants.java | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java index 20de1dc..f5c7dd9 100644 --- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java +++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java @@ -204,6 +204,7 @@ import static org.apache.hadoop.fs.s3a.impl.CallableSupplier.submit; import static org.apache.hadoop.fs.s3a.impl.CallableSupplier.waitForCompletionIgnoringExceptions; import static org.apache.hadoop.fs.s3a.impl.ErrorTranslation.isObjectNotFound; import static org.apache.hadoop.fs.s3a.impl.ErrorTranslation.isUnknownBucket; +import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_INACCESSIBLE; import static org.apache.hadoop.fs.s3a.impl.InternalConstants.AP_REQUIRED_EXCEPTION; import static org.apache.hadoop.fs.s3a.impl.InternalConstants.ARN_BUCKET_OPTION; import static org.apache.hadoop.fs.s3a.impl.InternalConstants.CSE_PADDING_LENGTH; @@ -730,7 +731,8 @@ public class S3AFileSystem extends FileSystem implements StreamCapabilities, s3.getBucketAcl(bucket); } catch (AmazonServiceException ex) { int statusCode = ex.getStatusCode(); - if (statusCode == SC_404 || (statusCode == SC_403 && accessPoint != null)) { + if (statusCode == SC_404 || + (statusCode == SC_403 && ex.getMessage().contains(AP_INACCESSIBLE))) { return false; } } diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/InternalConstants.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/InternalConstants.java index 5e79dfe..0cca19a 100644 --- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/InternalConstants.java +++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/InternalConstants.java @@ -144,6 +144,11 @@ public final class InternalConstants { " but not configured for the bucket."; /** + * Error message to indicate Access Points are not accessible or don't exist. + */ + public static final String AP_INACCESSIBLE = "Could not access through this access point"; + + /** * AccessPoint ARN for the bucket. When set as a bucket override the requests for that bucket * will go through the AccessPoint. */ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
