You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ps...@apache.org on 2021/03/16 16:37:33 UTC

[hbase] branch branch-2.2 updated: HBASE-25621 Balancer should check region plan source to avoid misplace region groups (#3002)

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

psomogyi 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 bf6fad3  HBASE-25621 Balancer should check region plan source to avoid misplace region groups (#3002)
bf6fad3 is described below

commit bf6fad3398f6d061432ac896c2f71147b35a57a3
Author: haxiaolin <li...@gmail.com>
AuthorDate: Tue Mar 16 05:47:27 2021 +0800

    HBASE-25621 Balancer should check region plan source to avoid misplace region groups (#3002)
    
    Signed-off-by: stack <st...@duboce.net>
---
 .../src/main/java/org/apache/hadoop/hbase/master/HMaster.java |  2 +-
 .../hadoop/hbase/master/assignment/AssignmentManager.java     | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 80d37be..d188229 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -1747,7 +1747,7 @@ public class HMaster extends HRegionServer implements MasterServices {
         LOG.info("balance " + plan);
         //TODO: bulk assign
         try {
-          this.assignmentManager.moveAsync(plan);
+          this.assignmentManager.balance(plan);
         } catch (HBaseIOException hioe) {
           //should ignore failed plans here, avoiding the whole balance plans be aborted
           //later calls of balance() can fetch up the failed and skipped plans
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
index 096571b..3dbdce9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
@@ -720,6 +720,17 @@ public class AssignmentManager {
     return ProcedureSyncWait.submitProcedure(master.getMasterProcedureExecutor(), proc);
   }
 
+  public Future<byte[]> balance(RegionPlan regionPlan) throws HBaseIOException {
+    ServerName current =
+      this.getRegionStates().getRegionAssignments().get(regionPlan.getRegionInfo());
+    if (!current.equals(regionPlan.getSource())) {
+      LOG.debug("Skip region plan {}, source server not match, current region location is {}",
+        regionPlan, current);
+      return null;
+    }
+    return moveAsync(regionPlan);
+  }
+
   // ============================================================================================
   //  RegionTransition procedures helpers
   // ============================================================================================