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


##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsClient.java:
##########
@@ -875,10 +873,15 @@ private boolean checkUserError(int responseStatusCode) {
         && responseStatusCode < HttpURLConnection.HTTP_INTERNAL_ERROR);
   }
 
-  private boolean isMd5ChecksumError(final AzureBlobFileSystemException e) {
+  /**
+   * To check if the failure exception returned by server is due to MD5 
Mismatch
+   * @param e Exception returned by AbfsRestOperation
+   * @return boolean whether exception is due to MD5Mismatch or not
+   */
+  protected boolean isMd5ChecksumError(final AzureBlobFileSystemException e) {
     return ((AbfsRestOperationException) e).getStatusCode()
         == HttpURLConnection.HTTP_BAD_REQUEST
-        && ((AbfsRestOperationException) 
e).getErrorMessage().contains(MD5_ERROR);
+        && e.getMessage().contains(MD5_ERROR_SERVER_MESSAGE);

Review Comment:
   This is how it works. Following things are returned by server:
   1. Status Code: 400
   2. Error Code: Md5Mismatch
   3. Error Message: The MD5 value specified in the request did not match with 
the MD5 value calculated by the server. RequestId:<rId> 
Time:2023-11-01T05:43:38.0231383Z
   4. Status Description: The MD5 value specified in the request did not match 
with the MD5 value calculated by the server. 
   
   From these we create an object of AbfsRestOperationException which has 
following fileds:
   1. Status Code: 400
   2. errorCode: AzureServiceErrorCode.MD5_MISMATCH. (A constant defined in 
latest commit)
   3. errorMessage: The MD5 value specified in the request did not match with 
the MD5 value calculated by the server. RequestId:<rId> 
Time:2023-11-01T05:43:38.0231383Z
   
   This AbfsRestOperationException's parent AzureBlobFileSystem also gets 
created with following fields:
   1. message: "Operation Failed" + statusDescription + statuscode + method + 
url + errorCode + errorMessage.
   2. innerException: null
   
   So e.getMessage() will resolve to AzureBloFileSystemException's message 
which will contain a lot of other things as well.
   e.getErrorMessage() will resolve to AbfsRestOperationException's message 
which will not have storage error code.
   
   Correct way will be to use e.getErrorCode() which will resolve to 
AbfsRestOperationException's errorCode which is exaclty Md5Mismatch



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to