You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by op...@apache.org on 2019/03/28 09:56:50 UTC
[hbase] 17/49: HBASE-22061 SplitTableRegionProcedure should hold
the lock of its daughter regions
This is an automated email from the ASF dual-hosted git repository.
openinx pushed a commit to branch HBASE-21879
in repository https://gitbox.apache.org/repos/asf/hbase.git
commit d637e301f0f256131e88b83ce117c0d0ae58c5eb
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