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

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

steveloughran commented on code in PR #7312:
URL: https://github.com/apache/hadoop/pull/7312#discussion_r1926796422


##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/contracts/services/AzureServiceErrorCode.java:
##########
@@ -58,7 +58,8 @@ public enum AzureServiceErrorCode {
   ACCOUNT_REQUIRES_HTTPS("AccountRequiresHttps", 
HttpURLConnection.HTTP_BAD_REQUEST, null),
   MD5_MISMATCH("Md5Mismatch", HttpURLConnection.HTTP_BAD_REQUEST,
           "The MD5 value specified in the request did not match with the MD5 
value calculated by the server."),
-  UNKNOWN(null, -1, null);
+  UNKNOWN(null, -1, null),
+  UNAUTHORIZED_BLOB_OVERWRITE("UnauthorizedBlobOverwrite", 
HttpURLConnection.HTTP_FORBIDDEN, "This request is not authorized to perform 
blob overwrites.");

Review Comment:
   nit:  split the line with the text on the line below



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsDfsClient.java:
##########
@@ -613,6 +615,11 @@ public AbfsClientRenameResult renamePath(
         throw e;
       }
 
+      if(op.getResult().getStorageErrorCode()
+          .equals(UNAUTHORIZED_BLOB_OVERWRITE.getErrorCode())){
+        throw new FileAlreadyExistsException("File already exists.");

Review Comment:
   Can you add a comment explaining why, e.g
   
   ```
   Write permission checks can happen before probes for validity
   of the operation -if there is a path at the destination
   it may be rejected with a authorization failure.
   Catch and translate. See HADOOP-19393.
   ```
   



##########
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/ITestAzureBlobFileSystemDelegationSAS.java:
##########
@@ -213,6 +214,24 @@ public void testReadAndWrite() throws Exception {
     }
   }
 
+  @Test
+  public void checkExceptionForRenameOverwrites() throws Exception {
+    final AzureBlobFileSystem fs = getFileSystem();
+
+    Path src = new Path("a/b/f1.txt");
+    Path dest = new Path("a/b/f2.txt");
+    touch(src);
+    touch(dest);
+
+    try {

Review Comment:
   use LambdaTestUtils.intercept, e.g
   ```
   intercept(FileAlreadyExistsException.class, () -> fs.rename(src, dest));
   ```
   





> ABFS: Returning FileAlreadyExists Exception for UnauthorizedBlobOverwrite 
> Rename Errors
> ---------------------------------------------------------------------------------------
>
>                 Key: HADOOP-19393
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19393
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs/azure
>    Affects Versions: 3.4.0, 3.4.1
>            Reporter: Manika Joshi
>            Assignee: Manika Joshi
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 3.5.0, 3.4.2
>
>
> ABFS driver adheres to Hadoop's expectations which does not allow rename blob 
> overwrites. Recently we came across the case where UnauthorizedBlobOverwrite 
> error (HTTP 403- Access Denied Exception) is thrown for rename overwrites 
> (with SAS authentication).
> Remapping this error to FileAlreadyExists exception for better understanding.



--
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