You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by vj...@apache.org on 2020/04/16 10:11:48 UTC

[hbase] branch branch-2 updated: HBASE-24151 The master server aborted for IllegalThreadStateException (#1507)

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

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


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 22912ff  HBASE-24151 The master server aborted for IllegalThreadStateException (#1507)
22912ff is described below

commit 22912ff346618c6eef251c80b5670b24455192a8
Author: Gkkkk302 <49...@users.noreply.github.com>
AuthorDate: Thu Apr 16 18:08:09 2020 +0800

    HBASE-24151 The master server aborted for IllegalThreadStateException (#1507)
    
    Signed-off-by: Jan Hentschel <ja...@ultratendency.com>
    Signed-off-by: Viraj Jasani <vj...@apache.org>
---
 .../apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java  | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index 5e7061a8a..cc163ac 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -37,6 +37,7 @@ import org.apache.hadoop.hbase.constraint.ConstraintException;
 import org.apache.hadoop.hbase.master.LoadBalancer;
 import org.apache.hadoop.hbase.master.MasterServices;
 import org.apache.hadoop.hbase.master.RegionPlan;
+import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;
 import org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer;
 import org.apache.hadoop.hbase.net.Address;
 import org.apache.hadoop.hbase.util.Pair;
@@ -354,9 +355,14 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer {
     }
 
     // Create the balancer
-    Class<? extends LoadBalancer> balancerKlass = config.getClass(HBASE_RSGROUP_LOADBALANCER_CLASS,
+    Class<? extends LoadBalancer> balancerClass = config.getClass(HBASE_RSGROUP_LOADBALANCER_CLASS,
         StochasticLoadBalancer.class, LoadBalancer.class);
-    internalBalancer = ReflectionUtils.newInstance(balancerKlass, config);
+    if (this.getClass().isAssignableFrom(balancerClass)) {
+      LOG.warn("The internal balancer of RSGroupBasedLoadBalancer cannot be itself, " +
+              "falling back to the default LoadBalancer class");
+      balancerClass = LoadBalancerFactory.getDefaultLoadBalancerClass();
+    }
+    internalBalancer = ReflectionUtils.newInstance(balancerClass, config);
     internalBalancer.setMasterServices(masterServices);
     if (clusterStatus != null) {
       internalBalancer.setClusterMetrics(clusterStatus);