You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2022/06/06 04:50:00 UTC

[jira] [Work logged] (HADOOP-18242) ABFS Rename Failure when tracking metadata is in incomplete state

     [ https://issues.apache.org/jira/browse/HADOOP-18242?focusedWorklogId=778509&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-778509 ]

ASF GitHub Bot logged work on HADOOP-18242:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 06/Jun/22 04:49
            Start Date: 06/Jun/22 04:49
    Worklog Time Spent: 10m 
      Work Description: snvijaya commented on code in PR #4331:
URL: https://github.com/apache/hadoop/pull/4331#discussion_r889819359


##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsClient.java:
##########
@@ -538,6 +544,23 @@ public Pair<AbfsRestOperation, Boolean> renamePath(
         if (!op.hasResult()) {
           throw e;
         }
+
+        // ref: HADOOP-18242. Rename failure occurring due to a rare case of
+        // tracking metadata being in incomplete state.
+        if (op.getResult().getStorageErrorCode()
+            .equals(RENAME_DESTINATION_PARENT_PATH_NOT_FOUND.getErrorCode())
+            && !hasRetriedRenameOnce) {
+          LOG.info("Rename Failure attempting to resolve tracking metadata "
+              + "state and retrying.");
+
+          // Doing a HEAD call resolves the incomplete metadata state and
+          // then we can retry the rename operation.
+          getPathStatus(source, false, tracingContext);
+          hasRetriedRenameOnce = true;
+          renamePath(source, destination, continuation, tracingContext,
+              sourceEtag);

Review Comment:
   retriedFlag needs to be passed through this recursion call itself.



##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsClient.java:
##########
@@ -102,6 +103,11 @@ public class AbfsClient implements Closeable {
 
   private final ListeningScheduledExecutorService executorService;
 
+  /**
+   * Has the Rename operation been retried once or not?
+   */
+  private boolean hasRetriedRenameOnce;

Review Comment:
   Having a class member can be an issue. What if 2 different renames are in progress, while one encounters the issue. 





Issue Time Tracking
-------------------

    Worklog Id:     (was: 778509)
    Time Spent: 1h  (was: 50m)

> ABFS Rename Failure when tracking metadata is in incomplete state
> -----------------------------------------------------------------
>
>                 Key: HADOOP-18242
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18242
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs/azure
>            Reporter: Mehakmeet Singh
>            Assignee: Mehakmeet Singh
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> If a node in the datacenter crashes while processing an operation, occasionally it can leave the Storage-internal blob tracking metadata in an incomplete state.  We expect this to happen occasionally, and so all API’s are designed in such a way that if this incomplete state is observed on a blob, the situation is resolved before the current operation proceeds.  However, this incident has exposed a bug specifically with the Rename API, where the incomplete state fails to resolve, leading to this incorrect failure.  As a temporary mitigation, if any other operation is performed on this blob – GetBlobProperties, GetBlob, GetFileProperties, SetFileProperties, etc – it should resolve the incomplete state, and rename will no longer hit this issue.
> StackTrace:
> {code:java}
> 2022-03-22 17:52:19,789 DEBUG [regionserver/euwukwlss-hg50:16020.logRoller] services.AbfsClient: HttpRequest: 404,RenameDestinationParentPathNotFound,cid=ef5cbf0f-5d4a-4630-8a59-3d559077fc24,rid=35fef164-101f-000b-1b15-3ed818000000,sent=0,recv=212,PUT,https://euwqdaotdfdls03.dfs.core.windows.net/eykbssc/apps/hbase/data/oldWALs/euwukwlss-hg50.tdf.qa%252C16020%252C1647949929877.1647967939315?timeout=90   {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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