You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by wc...@apache.org on 2019/10/04 17:21:08 UTC
[hbase] branch branch-2.1 updated: HBASE-23116: Fix a load balancer
logging nit. (#687)
This is an automated email from the ASF dual-hosted git repository.
wchevreuil pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new cb2a9a4 HBASE-23116: Fix a load balancer logging nit. (#687)
cb2a9a4 is described below
commit cb2a9a476595609feffe6ee29a80f32c1fe42c2c
Author: Bharath Vissapragada <bh...@cloudera.com>
AuthorDate: Fri Oct 4 10:07:49 2019 -0700
HBASE-23116: Fix a load balancer logging nit. (#687)
This commit adds table name to the logging context when
StochasticLoadBalancer is configured "per table". Added some
test coverage with per-table balancer enabled and manually
verified the logs to make sure the table name is formatted
correctly.
Signed-off-by: Viraj Jasani <vi...@gmail.com>
Signed-off-by: Wellington Chevreuil <wc...@apache.com>
(cherry picked from commit 06ff478674867204282899987cc8d3e5bef8bdac)
---
.../master/balancer/StochasticLoadBalancer.java | 8 ++++---
.../balancer/TestStochasticLoadBalancer.java | 26 +++++++++++++++-------
2 files changed, 23 insertions(+), 11 deletions(-)
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 d25d1ec..e209a43 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
@@ -301,9 +301,11 @@ public class StochasticLoadBalancer extends BaseLoadBalancer {
if (total <= 0 || sumMultiplier <= 0
|| (sumMultiplier > 0 && (total / sumMultiplier) < minCostNeedBalance)) {
if (LOG.isTraceEnabled()) {
- LOG.trace("Skipping load balancing because balanced cluster; " + "total cost is " + total
- + ", sum multiplier is " + sumMultiplier + " min cost which need balance is "
- + minCostNeedBalance);
+ final String loadBalanceTarget =
+ isByTable ? String.format("table (%s)", tableName) : "cluster";
+ LOG.trace("Skipping load balancing because the {} is balanced. Total cost: {}, "
+ + "Sum multiplier: {}, Minimum cost needed for balance: {}", loadBalanceTarget, total,
+ sumMultiplier, minCostNeedBalance);
}
return false;
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
index 41c3c4e..29952dd 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
@@ -33,6 +33,7 @@ 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.HConstants;
import org.apache.hadoop.hbase.RegionMetrics;
import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
@@ -160,15 +161,24 @@ public class TestStochasticLoadBalancer extends BalancerTestBase {
public void testNeedBalance() {
float minCost = conf.getFloat("hbase.master.balancer.stochastic.minCostNeedBalance", 0.05f);
conf.setFloat("hbase.master.balancer.stochastic.minCostNeedBalance", 1.0f);
- loadBalancer.setConf(conf);
- for (int[] mockCluster : clusterStateMocks) {
- Map<ServerName, List<RegionInfo>> servers = mockClusterServers(mockCluster);
- List<RegionPlan> plans = loadBalancer.balanceCluster(servers);
- assertNull(plans);
+ try {
+ // Test with/without per table balancer.
+ boolean[] perTableBalancerConfigs = {true, false};
+ for (boolean isByTable : perTableBalancerConfigs) {
+ conf.setBoolean(HConstants.HBASE_MASTER_LOADBALANCE_BYTABLE, isByTable);
+ loadBalancer.setConf(conf);
+ for (int[] mockCluster : clusterStateMocks) {
+ Map<ServerName, List<RegionInfo>> servers = mockClusterServers(mockCluster);
+ List<RegionPlan> plans = loadBalancer.balanceCluster(servers);
+ assertNull(plans);
+ }
+ }
+ } finally {
+ // reset config
+ conf.unset(HConstants.HBASE_MASTER_LOADBALANCE_BYTABLE);
+ conf.setFloat("hbase.master.balancer.stochastic.minCostNeedBalance", minCost);
+ loadBalancer.setConf(conf);
}
- // reset config
- conf.setFloat("hbase.master.balancer.stochastic.minCostNeedBalance", minCost);
- loadBalancer.setConf(conf);
}
@Test