You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2019/08/27 04:11:26 UTC

[hbase] branch branch-2.2 updated: HBASE-22922 Lock all regions to be merged in case of multi region merge (#542)

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

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


The following commit(s) were added to refs/heads/branch-2.2 by this push:
     new 76e9b84  HBASE-22922 Lock all regions to be merged in case of multi region merge (#542)
76e9b84 is described below

commit 76e9b84ac29e8b3c35a9d0795a23c1e46a887d60
Author: Istvan Toth <st...@users.noreply.github.com>
AuthorDate: Tue Aug 27 06:09:18 2019 +0200

    HBASE-22922 Lock all regions to be merged in case of multi region merge (#542)
    
    * HBASE-22922 Lock all regions to be merged in case of multi region merge
    
    * HBASE-22922 Lock all regions to be merged in case of multi region merge
     (addendum)
    
    fix off-by-one error in patch
    Signed-off-by: stack <st...@apache.org>
---
 .../hbase/master/assignment/MergeTableRegionsProcedure.java  | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index 8375dd0..41e77f8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -402,8 +402,10 @@ public class MergeTableRegionsProcedure
 
   @Override
   protected LockState acquireLock(final MasterProcedureEnv env) {
-    if (env.getProcedureScheduler().waitRegions(this, getTableName(),
-        mergedRegion, regionsToMerge[0], regionsToMerge[1])) {
+    RegionInfo[] lockRegions = Arrays.copyOf(regionsToMerge, regionsToMerge.length + 1);
+    lockRegions[lockRegions.length - 1] = mergedRegion;
+
+    if (env.getProcedureScheduler().waitRegions(this, getTableName(), lockRegions)) {
       try {
         LOG.debug(LockState.LOCK_EVENT_WAIT + " " + env.getProcedureScheduler().dumpLocks());
       } catch (IOException e) {
@@ -416,8 +418,10 @@ public class MergeTableRegionsProcedure
 
   @Override
   protected void releaseLock(final MasterProcedureEnv env) {
-    env.getProcedureScheduler().wakeRegions(this, getTableName(),
-      mergedRegion, regionsToMerge[0], regionsToMerge[1]);
+    RegionInfo[] lockRegions = Arrays.copyOf(regionsToMerge, regionsToMerge.length + 1);
+    lockRegions[lockRegions.length - 1] = mergedRegion;
+
+    env.getProcedureScheduler().wakeRegions(this, getTableName(), lockRegions);
   }
 
   @Override