This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.4 by this push:
     new 36fc9739fab HBASE-28533 On split procedure rollback revert parent 
region state back to OPEN (#5863)
36fc9739fab is described below

commit 36fc9739fab23ed339ff94b873d07ea5774cbbff
Author: droudnitsky <168442446+droudnit...@users.noreply.github.com>
AuthorDate: Tue Apr 30 09:55:40 2024 -0400

    HBASE-28533 On split procedure rollback revert parent region state back to 
OPEN (#5863)
    
    Co-authored-by: Daniel Roudnitsky <droudnits...@bloomberg.net>
    Signed-off-by: Duo Zhang <zhang...@apache.org>
    (cherry picked from commit 8a2f3ef79304f81ce1e81cf4635a7d3462c772e2)
---
 .../master/assignment/SplitTableRegionProcedure.java      | 15 ++++++++++++++-
 .../master/assignment/TestSplitTableRegionProcedure.java  |  6 ++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
index 903b823e6bf..ca355421f28 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java
@@ -389,7 +389,8 @@ public class SplitTableRegionProcedure
           postRollBackSplitRegion(env);
           break;
         case SPLIT_TABLE_REGION_PREPARE:
-          break; // nothing to do
+          rollbackPrepareSplit(env);
+          break;
         default:
           throw new UnsupportedOperationException(this + " unhandled state=" + 
state);
       }
@@ -568,6 +569,18 @@ public class SplitTableRegionProcedure
     return true;
   }
 
+  /**
+   * Rollback prepare split region
+   * @param env MasterProcedureEnv
+   */
+  private void rollbackPrepareSplit(final MasterProcedureEnv env) {
+    RegionStateNode parentRegionStateNode =
+      
env.getAssignmentManager().getRegionStates().getRegionStateNode(getParentRegion());
+    if (parentRegionStateNode.getState() == State.SPLITTING) {
+      parentRegionStateNode.setState(State.OPEN);
+    }
+  }
+
   /**
    * Action before splitting region in a table.
    * @param env MasterProcedureEnv
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java
index 5cbd53fd7e5..020f090f1dd 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java
@@ -47,6 +47,7 @@ import org.apache.hadoop.hbase.coprocessor.ObserverContext;
 import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;
 import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.coprocessor.RegionObserver;
+import org.apache.hadoop.hbase.master.RegionState;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureTestingUtility;
@@ -235,6 +236,11 @@ public class TestSplitTableRegionProcedure {
     // There should not be any active OpenRegionProcedure
     procExec.getActiveProceduresNoCopy()
       .forEach(p -> assertFalse(p instanceof OpenRegionProcedure));
+
+    // Check that procedure rollback reverted parent region state to OPEN
+    AssignmentManager am = 
UTIL.getHBaseCluster().getMaster().getAssignmentManager();
+    RegionStateNode regionStateNode = 
am.getRegionStates().getRegionStateNode(regions[0]);
+    assertEquals(RegionState.State.OPEN, regionStateNode.getState());
   }
 
   @Test

Reply via email to