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());
}