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