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]

Reply via email to