From b151f378aba1ac7539b7926b3e457b7955bea901 Mon Sep 17 00:00:00 2001 From: Guangxu Cheng Date: Mon, 15 May 2017 20:17:31 +0800 Subject: [PATCH] HBASE-18051 balance_rsgroup still run when the Load Balancer is not enabled. --- .../hadoop/hbase/rsgroup/RSGroupAdminServer.java | 2 ++ .../org/apache/hadoop/hbase/master/HMaster.java | 7 +------ .../apache/hadoop/hbase/master/MasterServices.java | 9 +++++++++ .../hbase/master/MockNoopMasterServices.java | 5 +++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java index 3c0cccf..719381e 100644 --- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java +++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java @@ -492,6 +492,8 @@ public class RSGroupAdminServer implements RSGroupAdmin { boolean balancerRan; synchronized (balancer) { + // If balance not true, don't run balancer. + if (!master.isBalancerOn()) return false; if (master.getMasterCoprocessorHost() != null) { master.getMasterCoprocessorHost().preBalanceRSGroup(groupName); } 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 e4ba285..e5be163 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 @@ -3118,12 +3118,7 @@ public class HMaster extends HRegionServer implements MasterServices { mobCompactThread.requestMobCompaction(conf, fs, tableName, columns, allFiles); } - /** - * Queries the state of the {@link LoadBalancerTracker}. If the balancer is not initialized, - * false is returned. - * - * @return The state of the load balancer, or false if the load balancer isn't defined. - */ + @Override public boolean isBalancerOn() { if (null == loadBalancerTracker || isInMaintenanceMode()) { return false; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java index 4924d72..f7f7bb6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java @@ -46,6 +46,7 @@ import org.apache.hadoop.hbase.replication.ReplicationException; import org.apache.hadoop.hbase.replication.ReplicationPeerConfig; import org.apache.hadoop.hbase.replication.ReplicationPeerDescription; import com.google.protobuf.Service; +import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker; /** * Services Master supplies @@ -478,4 +479,12 @@ public interface MasterServices extends Server { * @return {@link LockManager} to lock namespaces/tables/regions. */ LockManager getLockManager(); + + /** + * Queries the state of the {@link LoadBalancerTracker}. If the balancer is not initialized, + * false is returned. + * + * @return The state of the load balancer, or false if the load balancer isn't defined. + */ + boolean isBalancerOn(); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java index ff6b88e..1c61c3e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java @@ -426,4 +426,9 @@ public class MockNoopMasterServices implements MasterServices, Server { public LockManager getLockManager() { return null; } + + @Override + public boolean isBalancerOn() { + return true; + } } -- 1.7.1