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

ASF GitHub Bot commented on HADOOP-19232:
-----------------------------------------

anujmodi2021 commented on code in PR #7272:
URL: https://github.com/apache/hadoop/pull/7272#discussion_r1917752527


##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystem.java:
##########
@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration 
configuration)
       throw new 
InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
     }
 
+    /**
+     * Validates if the FixedSASTokenProvider is configured for non-HNS 
accounts.
+     * If the namespace is not enabled and the FixedSASTokenProvider is not 
configured,
+     * the filesystem is closed and an InvalidConfigurationValueException is 
thrown.
+     *
+     * @throws InvalidConfigurationValueException if the namespace is not 
enabled and the FixedSASTokenProvider is not configured.
+     */
+    try {
+      if (!getIsNamespaceEnabled(new TracingContext(initFSTracingContext))
+          && !abfsConfiguration.isFixedSASTokenProviderConfigured()) {
+        close();

Review Comment:
   No need of close() here. FileSystem creation happening after all the checks 
now.



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystem.java:
##########
@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration 
configuration)
       throw new 
InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
     }
 
+    /**

Review Comment:
   This should be a blocked comment instead of javadoc to avoid dangling 
javadoc issues.



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystem.java:
##########
@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration 
configuration)
       throw new 
InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
     }
 
+    /**
+     * Validates if the FixedSASTokenProvider is configured for non-HNS 
accounts.
+     * If the namespace is not enabled and the FixedSASTokenProvider is not 
configured,
+     * the filesystem is closed and an InvalidConfigurationValueException is 
thrown.
+     *
+     * @throws InvalidConfigurationValueException if the namespace is not 
enabled and the FixedSASTokenProvider is not configured.
+     */
+    try {
+      if (!getIsNamespaceEnabled(new TracingContext(initFSTracingContext))

Review Comment:
   Better use `tryGetIsNamespaceEnabled()` here with proper exception handling.
   Refer to: 
https://github.com/apache/hadoop/blob/f38d7072566e88c77e47d1533e4be4c1bd98a06a/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystem.java#L242



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/contracts/exceptions/InvalidIngressServiceException.java:
##########
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.fs.azurebfs.contracts.exceptions;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+
+/**
+ * Exception thrown when an invalid ingress service is encountered.
+ *
+ * <p>This exception is used to indicate that the ingress service being used
+ * is not valid or supported. It extends the {@link AbfsRestOperationException}
+ * to provide additional context about the error.</p>
+ *
+ * @see AbfsRestOperationException
+ */
[email protected]
[email protected]
+public final class InvalidIngressServiceException extends 
AbfsRestOperationException {
+
+  /**
+   * Constructs a new InvalidIngressServiceException with the specified 
details.
+   *
+   * @param statusCode the HTTP status code
+   * @param errorCode the error code
+   * @param errorMessage the error message
+   * @param innerException the inner exception
+   */
+  public InvalidIngressServiceException(final int statusCode,

Review Comment:
   May be I am missing something here, but I can see there are 2 constructors 
for base exception and the one that excepts AbfsHttpOperation as a separate 
parameter calls the `formatMessage()` which adds the req Id to exception 
message.
   
   Refering to: 
https://github.com/apache/hadoop/blob/f38d7072566e88c77e47d1533e4be4c1bd98a06a/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/contracts/exceptions/AbfsRestOperationException.java#L83



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystem.java:
##########
@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration 
configuration)
       throw new 
InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
     }
 
+    /**
+     * Validates if the FixedSASTokenProvider is configured for non-HNS 
accounts.

Review Comment:
   I feel like the comment here should be re-phrased. Its sounds like only 
FixedSasTokenProvider can be used with FNS. It should clarify that if Auth Type 
is SAS then user can only configure a fixed SAS Token and SASTokenProvider 
should not be configured at all otherwise Fixed SAS Token won't be used.
   Refer to 
https://github.com/apache/hadoop/blob/f38d7072566e88c77e47d1533e4be4c1bd98a06a/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AbfsConfiguration.java#L1225



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystem.java:
##########
@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration 
configuration)
       throw new 
InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
     }
 
+    /**
+     * Validates if the FixedSASTokenProvider is configured for non-HNS 
accounts.
+     * If the namespace is not enabled and the FixedSASTokenProvider is not 
configured,
+     * the filesystem is closed and an InvalidConfigurationValueException is 
thrown.
+     *
+     * @throws InvalidConfigurationValueException if the namespace is not 
enabled and the FixedSASTokenProvider is not configured.
+     */
+    try {
+      if (!getIsNamespaceEnabled(new TracingContext(initFSTracingContext))
+          && !abfsConfiguration.isFixedSASTokenProviderConfigured()) {
+        close();
+        throw new InvalidConfigurationValueException(
+            FS_AZURE_SAS_TOKEN_PROVIDER_TYPE, UNAUTHORIZED_SAS);
+      }
+    } catch (AzureBlobFileSystemException ex) {

Review Comment:
   We need better exception handling here.
   We should first catch SASTokenProviderException and throw 
InvalidConfigurationValueException() with original exception included as it 
will tell why getSASTokenProvder() failed.
   
   Then we should catch the AzureBlobFileSystemException that can be thrown 
while determining account type.



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/constants/AbfsHttpConstants.java:
##########
@@ -279,6 +303,13 @@ public static ApiVersion getCurrentVersion() {
           + "non-hierarchical-namespace account:"
           + CPK_CONFIG_LIST;
 
+
+  /**
+   * Exception message on filesystem init if token-provider-auth-type configs 
are provided
+   */
+  public static final String UNAUTHORIZED_SAS =

Review Comment:
   Can be moved to AbfsErrors.java class





> ABFS: [FnsOverBlob] Implementing Ingress Support with various Fallback 
> Handling
> -------------------------------------------------------------------------------
>
>                 Key: HADOOP-19232
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19232
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/azure
>    Affects Versions: 3.4.0
>            Reporter: Anuj Modi
>            Assignee: Anmol Asrani
>            Priority: Major
>              Labels: pull-request-available
>
> Scope of this task is to refactor the AbfsOutputStream class to handle the 
> ingress for DFS and Blob endpoint effectively.
> More details will be added soon.
> Perquisites for this Patch:
> 1. [HADOOP-19187] ABFS: [FnsOverBlob]Making AbfsClient Abstract for 
> supporting both DFS and Blob Endpoint - ASF JIRA (apache.org)
> 2. [HADOOP-19226] ABFS: [FnsOverBlob]Implementing Azure Rest APIs on Blob 
> Endpoint for AbfsBlobClient - ASF JIRA (apache.org)
> 3. [HADOOP-19207] ABFS: [FnsOverBlob]Response Handling of Blob Endpoint APIs 
> and Metadata APIs - ASF JIRA (apache.org)



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

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

Reply via email to