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

zhangduo 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 2d4904c  HBASE-25851 Make LoadBalancer not extend Configurable 
interface (#3233) (#3235)
2d4904c is described below

commit 2d4904ceeaf18af0364a6322133fe643b4ed9342
Author: Duo Zhang <[email protected]>
AuthorDate: Thu May 6 23:39:43 2021 +0800

    HBASE-25851 Make LoadBalancer not extend Configurable interface (#3233) 
(#3235)
    
    Signed-off-by: Yulin Niu <[email protected]>
---
 .../hbase/rsgroup/RSGroupBasedLoadBalancer.java    | 25 +++++-----------------
 .../balancer/RSGroupableBalancerTestBase.java      |  4 ++++
 .../balancer/TestRSGroupBasedLoadBalancer.java     |  8 +------
 ...lancerWithStochasticLoadBalancerAsInternal.java |  4 ----
 .../hbase/favored/FavoredNodeLoadBalancer.java     | 12 +----------
 .../apache/hadoop/hbase/master/LoadBalancer.java   |  3 +--
 .../hbase/master/balancer/BaseLoadBalancer.java    | 19 +++++++---------
 .../master/balancer/FavoredStochasticBalancer.java |  6 ++++--
 .../hbase/master/balancer/LoadBalancerFactory.java | 12 +++++------
 .../master/balancer/MaintenanceLoadBalancer.java   |  3 +--
 .../master/balancer/StochasticLoadBalancer.java    |  4 ++--
 .../hbase/master/balancer/BalancerTestBase.java    |  7 +++++-
 .../master/balancer/TestBaseLoadBalancer.java      |  6 +++---
 .../master/balancer/TestSimpleLoadBalancer.java    |  1 -
 ...estStochasticLoadBalancerHeterogeneousCost.java |  8 ++++++-
 15 files changed, 48 insertions(+), 74 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 a8e77c2..188a743 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
@@ -42,7 +42,7 @@ 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;
-import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.hadoop.hbase.util.ReflectionUtils;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -70,7 +70,6 @@ import 
org.apache.hbase.thirdparty.com.google.common.collect.Maps;
 public class RSGroupBasedLoadBalancer implements RSGroupableBalancer {
   private static final Logger LOG = 
LoggerFactory.getLogger(RSGroupBasedLoadBalancer.class);
 
-  private Configuration config;
   private ClusterMetrics clusterStatus;
   private MasterServices masterServices;
   private volatile RSGroupInfoManager rsGroupInfoManager;
@@ -94,19 +93,6 @@ public class RSGroupBasedLoadBalancer implements 
RSGroupableBalancer {
   public RSGroupBasedLoadBalancer() {}
 
   @Override
-  public Configuration getConf() {
-    return config;
-  }
-
-  @Override
-  public void setConf(Configuration conf) {
-    this.config = conf;
-    if (internalBalancer != null) {
-      internalBalancer.setConf(conf);
-    }
-  }
-
-  @Override
   public void setClusterMetrics(ClusterMetrics sm) {
     this.clusterStatus = sm;
     if (internalBalancer != null) {
@@ -353,23 +339,23 @@ public class RSGroupBasedLoadBalancer implements 
RSGroupableBalancer {
       throw new HBaseIOException("Failed to initialize GroupInfoManagerImpl", 
e);
     }
 
+    Configuration conf = masterServices.getConfiguration();
     // Create the balancer
-    Class<? extends LoadBalancer> balancerClass = 
config.getClass(HBASE_RSGROUP_LOADBALANCER_CLASS,
+    Class<? extends LoadBalancer> balancerClass = 
conf.getClass(HBASE_RSGROUP_LOADBALANCER_CLASS,
         StochasticLoadBalancer.class, LoadBalancer.class);
     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 = ReflectionUtils.newInstance(balancerClass);
     internalBalancer.setMasterServices(masterServices);
     if (clusterStatus != null) {
       internalBalancer.setClusterMetrics(clusterStatus);
     }
-    internalBalancer.setConf(config);
     internalBalancer.initialize();
     // init fallback groups
-    this.fallbackEnabled = config.getBoolean(FALLBACK_GROUP_ENABLE_KEY, false);
+    this.fallbackEnabled = conf.getBoolean(FALLBACK_GROUP_ENABLE_KEY, false);
   }
 
   public boolean isOnline() {
@@ -394,7 +380,6 @@ public class RSGroupBasedLoadBalancer implements 
RSGroupableBalancer {
 
   @Override
   public void onConfigurationChange(Configuration conf) {
-    this.config = conf;
     boolean newFallbackEnabled = conf.getBoolean(FALLBACK_GROUP_ENABLE_KEY, 
false);
     if (fallbackEnabled != newFallbackEnabled) {
       LOG.info("Changing the value of {} from {} to {}", 
FALLBACK_GROUP_ENABLE_KEY,
diff --git 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/RSGroupableBalancerTestBase.java
 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/RSGroupableBalancerTestBase.java
index c109135..713aab2 100644
--- 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/RSGroupableBalancerTestBase.java
+++ 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/RSGroupableBalancerTestBase.java
@@ -32,6 +32,8 @@ import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableDescriptors;
 import org.apache.hadoop.hbase.TableName;
@@ -73,6 +75,7 @@ public class RSGroupableBalancerTestBase extends 
BalancerTestBase{
   static List<TableDescriptor> tableDescs;
   int[] regionAssignment = new int[] { 2, 5, 7, 10, 4, 3, 1 };
   static int regionId = 0;
+  static Configuration conf = HBaseConfiguration.create();
 
   /**
    * Invariant is that all servers of a group have load between floor(avg) and
@@ -416,6 +419,7 @@ public class RSGroupableBalancerTestBase extends 
BalancerTestBase{
     Mockito.when(services.getTableDescriptors()).thenReturn(tds);
     AssignmentManager am = Mockito.mock(AssignmentManager.class);
     Mockito.when(services.getAssignmentManager()).thenReturn(am);
+    Mockito.when(services.getConfiguration()).thenReturn(conf);
     return services;
   }
 
diff --git 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancer.java
 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancer.java
index e7ee7a9..c901bbd 100644
--- 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancer.java
+++ 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancer.java
@@ -30,9 +30,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
@@ -67,13 +65,11 @@ public class TestRSGroupBasedLoadBalancer extends 
RSGroupableBalancerTestBase {
     servers = generateServers(7);
     groupMap = constructGroupInfo(servers, groups);
     tableDescs = constructTableDesc(true);
-    Configuration conf = HBaseConfiguration.create();
     conf.set("hbase.regions.slop", "0");
     conf.set("hbase.rsgroup.grouploadbalancer.class", 
SimpleLoadBalancer.class.getCanonicalName());
     loadBalancer = new RSGroupBasedLoadBalancer();
     loadBalancer.setRsGroupInfoManager(getMockedGroupInfoManager());
     loadBalancer.setMasterServices(getMockedMaster());
-    loadBalancer.setConf(conf);
     loadBalancer.initialize();
   }
 
@@ -88,9 +84,8 @@ public class TestRSGroupBasedLoadBalancer extends 
RSGroupableBalancerTestBase {
     // Test with/without per table balancer.
     boolean[] perTableBalancerConfigs = { true, false };
     for (boolean isByTable : perTableBalancerConfigs) {
-      Configuration conf = loadBalancer.getConf();
       conf.setBoolean(HConstants.HBASE_MASTER_LOADBALANCE_BYTABLE, isByTable);
-      loadBalancer.setConf(conf);
+      loadBalancer.onConfigurationChange(conf);
       Map<ServerName, List<RegionInfo>> servers = mockClusterServers();
       ArrayListMultimap<String, ServerAndLoad> list = 
convertToGroupBasedMap(servers);
       LOG.info("Mock Cluster :  " + printStats(list));
@@ -194,7 +189,6 @@ public class TestRSGroupBasedLoadBalancer extends 
RSGroupableBalancerTestBase {
     assertFalse(loadBalancer.isFallbackEnabled());
 
     // change FALLBACK_GROUP_ENABLE_KEY from false to true
-    Configuration conf = loadBalancer.getConf();
     conf.setBoolean(RSGroupBasedLoadBalancer.FALLBACK_GROUP_ENABLE_KEY, true);
     loadBalancer.onConfigurationChange(conf);
     assertTrue(loadBalancer.isFallbackEnabled());
diff --git 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
index ac27766..e2ef688 100644
--- 
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
+++ 
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
@@ -29,10 +29,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterMetrics;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.RegionMetrics;
 import org.apache.hadoop.hbase.ServerMetrics;
 import org.apache.hadoop.hbase.ServerName;
@@ -66,7 +64,6 @@ public class 
TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal
     servers = generateServers(3);
     groupMap = constructGroupInfo(servers, groups);
     tableDescs = constructTableDesc(false);
-    Configuration conf = HBaseConfiguration.create();
     conf.set("hbase.regions.slop", "0");
     conf.setFloat("hbase.master.balancer.stochastic.readRequestCost", 10000f);
     conf.set("hbase.rsgroup.grouploadbalancer.class",
@@ -74,7 +71,6 @@ public class 
TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal
     loadBalancer = new RSGroupBasedLoadBalancer();
     loadBalancer.setRsGroupInfoManager(getMockedGroupInfoManager());
     loadBalancer.setMasterServices(getMockedMaster());
-    loadBalancer.setConf(conf);
     loadBalancer.initialize();
   }
 
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
index 67d868d..122baa0 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
@@ -29,8 +29,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseIOException;
 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
 import org.apache.hadoop.hbase.ServerMetrics;
@@ -71,21 +69,13 @@ public class FavoredNodeLoadBalancer extends 
BaseLoadBalancer implements Favored
   private static final Logger LOG = 
LoggerFactory.getLogger(FavoredNodeLoadBalancer.class);
 
   private RackManager rackManager;
-  private Configuration conf;
   private FavoredNodesManager fnm;
 
   @Override
-  public void setConf(Configuration conf) {
-    this.conf = conf;
-  }
-
-  @Override
   public synchronized void initialize() throws HBaseIOException {
     super.initialize();
-    super.setConf(conf);
     this.fnm = services.getFavoredNodesManager();
-    this.rackManager = new RackManager(conf);
-    super.setConf(conf);
+    this.rackManager = new RackManager(getConf());
   }
 
   @Override
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index 9ba68a5..3840990 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -22,7 +22,6 @@ import edu.umd.cs.findbugs.annotations.NonNull;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
-import org.apache.hadoop.conf.Configurable;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterMetrics;
 import org.apache.hadoop.hbase.HBaseIOException;
@@ -48,7 +47,7 @@ import org.apache.yetus.audience.InterfaceAudience;
  * to execute.
  */
 @InterfaceAudience.Private
-public interface LoadBalancer extends Configurable, Stoppable, 
ConfigurationObserver {
+public interface LoadBalancer extends Stoppable, ConfigurationObserver {
   /**
    * Master can carry regions as of hbase-2.0.0.
    * By default, it carries no tables.
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 3b7ec0a..492fea6 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -85,7 +85,6 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
   protected float slop;
   // overallSlop to control simpleLoadBalancer's cluster level threshold
   protected float overallSlop;
-  protected Configuration config;
   protected RackManager rackManager;
   protected MetricsBalancer metricsBalancer = null;
   protected ClusterMetrics clusterStatus = null;
@@ -114,9 +113,11 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
     this.metricsBalancer = (metricsBalancer != null) ? metricsBalancer : new 
MetricsBalancer();
   }
 
-  @Override
-  public void setConf(Configuration conf) {
-    this.config = conf;
+  protected final Configuration getConf() {
+    return services.getConfiguration();
+  }
+
+  protected void setConf(Configuration conf) {
     setSlop(conf);
     if (slop < 0) {
       slop = 0;
@@ -130,10 +131,10 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
       overallSlop = 1;
     }
 
-    this.onlySystemTablesOnMaster = 
LoadBalancer.isSystemTablesOnlyOnMaster(this.config);
+    this.onlySystemTablesOnMaster = 
LoadBalancer.isSystemTablesOnlyOnMaster(conf);
 
     this.rackManager = new RackManager(getConf());
-    useRegionFinder = config.getBoolean("hbase.master.balancer.uselocality", 
true);
+    useRegionFinder = conf.getBoolean("hbase.master.balancer.uselocality", 
true);
     if (useRegionFinder) {
       regionFinder = new RegionLocationFinder();
       regionFinder.setConf(conf);
@@ -238,11 +239,6 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
   }
 
   @Override
-  public Configuration getConf() {
-    return this.config;
-  }
-
-  @Override
   public synchronized void setClusterMetrics(ClusterMetrics st) {
     this.clusterStatus = st;
     if (useRegionFinder) {
@@ -255,6 +251,7 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
   public void setMasterServices(MasterServices masterServices) {
     masterServerName = masterServices.getServerName();
     this.services = masterServices;
+    setConf(services.getConfiguration());
     if (useRegionFinder) {
       this.regionFinder.setServices(masterServices);
     }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
index 81c0a2c..6bbc07a 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
@@ -33,6 +33,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseIOException;
 import org.apache.hadoop.hbase.ServerMetrics;
 import org.apache.hadoop.hbase.ServerName;
@@ -331,10 +332,11 @@ public class FavoredStochasticBalancer extends 
StochasticLoadBalancer implements
 
     metricsBalancer.incrMiscInvocations();
 
+    Configuration conf = getConf();
     List<ServerName> favoredNodes = fnm.getFavoredNodes(regionInfo);
     if (favoredNodes == null || favoredNodes.isEmpty()) {
       // Generate new favored nodes and return primary
-      FavoredNodeAssignmentHelper helper = new 
FavoredNodeAssignmentHelper(servers, getConf());
+      FavoredNodeAssignmentHelper helper = new 
FavoredNodeAssignmentHelper(servers, conf);
       helper.initialize();
       try {
         favoredNodes = helper.generateFavoredNodes(regionInfo);
@@ -351,7 +353,7 @@ public class FavoredStochasticBalancer extends 
StochasticLoadBalancer implements
       destination = 
onlineServers.get(ThreadLocalRandom.current().nextInt(onlineServers.size()));
     }
 
-    boolean alwaysAssign = getConf().getBoolean(FAVORED_ALWAYS_ASSIGN_REGIONS, 
true);
+    boolean alwaysAssign = conf.getBoolean(FAVORED_ALWAYS_ASSIGN_REGIONS, 
true);
     if (destination == null && alwaysAssign) {
       LOG.warn("Can't generate FN for region: " + regionInfo + " falling 
back");
       destination = super.randomAssignment(regionInfo, servers);
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java
index 9ce020b..15279cf 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java
@@ -17,11 +17,11 @@
  */
 package org.apache.hadoop.hbase.master.balancer;
 
-import org.apache.yetus.audience.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.master.LoadBalancer;
-import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.hadoop.hbase.util.ReflectionUtils;
+import org.apache.yetus.audience.InterfaceAudience;
 
 /**
  * The class that creates a load balancer from a conf.
@@ -44,12 +44,10 @@ public class LoadBalancerFactory {
    * @return A {@link LoadBalancer}
    */
   public static LoadBalancer getLoadBalancer(Configuration conf) {
-
     // Create the balancer
     Class<? extends LoadBalancer> balancerKlass =
-        conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, 
getDefaultLoadBalancerClass(),
-          LoadBalancer.class);
-    return ReflectionUtils.newInstance(balancerKlass, conf);
-
+      conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, 
getDefaultLoadBalancerClass(),
+        LoadBalancer.class);
+    return ReflectionUtils.newInstance(balancerKlass);
   }
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MaintenanceLoadBalancer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MaintenanceLoadBalancer.java
index 4a3cd49..fc181fd 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MaintenanceLoadBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MaintenanceLoadBalancer.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.conf.Configured;
 import org.apache.hadoop.hbase.ClusterMetrics;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
@@ -38,7 +37,7 @@ import org.apache.yetus.audience.InterfaceAudience;
  * a balancer which is only used in maintenance mode.
  */
 @InterfaceAudience.Private
-public class MaintenanceLoadBalancer extends Configured implements 
LoadBalancer {
+public class MaintenanceLoadBalancer implements LoadBalancer {
 
   private volatile boolean stopped = false;
 
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
index 685f247..8aed804 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
@@ -166,7 +166,7 @@ public class StochasticLoadBalancer extends 
BaseLoadBalancer {
   }
 
   @Override
-  public synchronized void setConf(Configuration conf) {
+  protected synchronized void setConf(Configuration conf) {
     super.setConf(conf);
     maxSteps = conf.getInt(MAX_STEPS_KEY, maxSteps);
     stepsPerRegion = conf.getInt(STEPS_PER_REGION_KEY, stepsPerRegion);
@@ -219,7 +219,7 @@ public class StochasticLoadBalancer extends 
BaseLoadBalancer {
       .getBoolean(BaseLoadBalancer.BALANCER_DECISION_BUFFER_ENABLED,
         BaseLoadBalancer.DEFAULT_BALANCER_DECISION_BUFFER_ENABLED);
     if (this.namedQueueRecorder == null && isBalancerDecisionRecording) {
-      this.namedQueueRecorder = NamedQueueRecorder.getInstance(getConf());
+      this.namedQueueRecorder = NamedQueueRecorder.getInstance(conf);
     }
 
     LOG.info("Loaded config; maxSteps=" + maxSteps + ", stepsPerRegion=" + 
stepsPerRegion +
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
index 8585b5c..413899b 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java
@@ -20,6 +20,8 @@ package org.apache.hadoop.hbase.master.balancer;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -44,6 +46,7 @@ import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.RegionInfoBuilder;
 import org.apache.hadoop.hbase.client.RegionReplicaUtil;
+import org.apache.hadoop.hbase.master.MasterServices;
 import org.apache.hadoop.hbase.master.RackManager;
 import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.util.Bytes;
@@ -73,7 +76,9 @@ public class BalancerTestBase {
     conf.setFloat("hbase.regions.slop", 0.0f);
     conf.setFloat("hbase.master.balancer.stochastic.localityCost", 0);
     loadBalancer = new StochasticLoadBalancer();
-    loadBalancer.setConf(conf);
+    MasterServices services = mock(MasterServices.class);
+    when(services.getConfiguration()).thenReturn(conf);
+    loadBalancer.setMasterServices(services);
   }
 
   protected int[] largeCluster = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0,
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
index 63b6791..9b81c0d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java
@@ -70,7 +70,7 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
   public static final HBaseClassTestRule CLASS_RULE =
       HBaseClassTestRule.forClass(TestBaseLoadBalancer.class);
 
-  private static LoadBalancer loadBalancer;
+  private static MockBalancer loadBalancer;
   private static final Logger LOG = 
LoggerFactory.getLogger(TestBaseLoadBalancer.class);
   private static final ServerName master = ServerName.valueOf("fake-master", 
0, 1L);
   private static RackManager rackManager;
@@ -92,9 +92,9 @@ public class TestBaseLoadBalancer extends BalancerTestBase {
     Configuration conf = HBaseConfiguration.create();
     conf.setClass("hbase.util.ip.to.rack.determiner", MockMapping.class, 
DNSToSwitchMapping.class);
     loadBalancer = new MockBalancer();
-    loadBalancer.setConf(conf);
     MasterServices st = mock(MasterServices.class);
     when(st.getServerName()).thenReturn(master);
+    when(st.getConfiguration()).thenReturn(conf);
     loadBalancer.setMasterServices(st);
 
     // Set up the rack topologies (5 machines per rack)
@@ -232,11 +232,11 @@ public class TestBaseLoadBalancer extends 
BalancerTestBase {
     };
     Configuration conf = HBaseConfiguration.create();
     conf.setClass("hbase.util.ip.to.rack.determiner", MockMapping.class, 
DNSToSwitchMapping.class);
-    balancer.setConf(conf);
     ServerManager sm = mock(ServerManager.class);
     when(sm.getOnlineServersListWithPredicator(anyList(), 
any())).thenReturn(idleServers);
     MasterServices services = mock(MasterServices.class);
     when(services.getServerManager()).thenReturn(sm);
+    when(services.getConfiguration()).thenReturn(conf);
     balancer.setMasterServices(services);
     RegionInfo hri1 = 
RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
         .setStartKey("key1".getBytes())
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
index 24273f3..cbe952d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestSimpleLoadBalancer.java
@@ -65,7 +65,6 @@ public class TestSimpleLoadBalancer extends BalancerTestBase {
     conf.setClass("hbase.util.ip.to.rack.determiner", MockMapping.class, 
DNSToSwitchMapping.class);
     conf.set("hbase.regions.slop", "0");
     loadBalancer = new SimpleLoadBalancer();
-    loadBalancer.setConf(conf);
   }
 
   // int[testnum][servernumber] -> numregions
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
index 8ea7118..5cc8275 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancerHeterogeneousCost.java
@@ -17,6 +17,9 @@ package org.apache.hadoop.hbase.master.balancer;
 import static junit.framework.TestCase.assertNotNull;
 import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
@@ -35,6 +38,7 @@ import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.RegionReplicaUtil;
+import org.apache.hadoop.hbase.master.MasterServices;
 import org.apache.hadoop.hbase.master.RackManager;
 import org.apache.hadoop.hbase.master.RegionPlan;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
@@ -75,7 +79,9 @@ public class TestStochasticLoadBalancerHeterogeneousCost 
extends BalancerTestBas
       
HeterogeneousRegionCountCostFunction.HBASE_MASTER_BALANCER_HETEROGENEOUS_RULES_FILE,
       RULES_FILE);
     BalancerTestBase.loadBalancer = new StochasticLoadBalancer();
-    BalancerTestBase.loadBalancer.setConf(BalancerTestBase.conf);
+    MasterServices services = mock(MasterServices.class);
+    when(services.getConfiguration()).thenReturn(conf);
+    BalancerTestBase.loadBalancer.setMasterServices(services);
     BalancerTestBase.loadBalancer.getCandidateGenerators().add(new 
FairRandomCandidateGenerator());
   }
 

Reply via email to