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