You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ti...@apache.org on 2019/03/20 06:12:28 UTC

[hbase] branch master updated: HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions

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

tianjy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new c52dd9e  HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions
c52dd9e is described below

commit c52dd9efa0607f922be5147f029fb0da4fa3f07b
Author: Jingyun Tian <ti...@gmail.com>
AuthorDate: Tue Mar 19 14:25:04 2019 +0800

    HBASE-22061 SplitTableRegionProcedure should hold the lock of its daughter regions
---
 .../master/assignment/SplitTableRegionProcedure.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

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 8e0dcd3..7b74919 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
@@ -137,6 +137,26 @@ public class SplitTableRegionProcedure
     }
   }
 
+  @Override
+  protected LockState acquireLock(final MasterProcedureEnv env) {
+    if (env.getProcedureScheduler().waitRegions(this, getTableName(), getParentRegion(),
+      daughter_1_RI, daughter_2_RI)) {
+      try {
+        LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());
+      } catch (IOException e) {
+        // Ignore, just for logging
+      }
+      return LockState.LOCK_EVENT_WAIT;
+    }
+    return LockState.LOCK_ACQUIRED;
+  }
+
+  @Override
+  protected void releaseLock(final MasterProcedureEnv env) {
+    env.getProcedureScheduler().wakeRegions(this, getTableName(), getParentRegion(), daughter_1_RI,
+      daughter_2_RI);
+  }
+
   /**
    * Check whether the region is splittable
    * @param env MasterProcedureEnv