This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2.3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.3 by this push:
new 09c6375 HBASE-25995 Change the method name for
DoubleArrayCost.setCosts (#3381)
09c6375 is described below
commit 09c63754a69db2f2c8f31bd0dbde42e2a8c54514
Author: Duo Zhang <[email protected]>
AuthorDate: Tue Jun 15 11:53:00 2021 +0800
HBASE-25995 Change the method name for DoubleArrayCost.setCosts (#3381)
Signed-off-by: Yulin Niu <[email protected]>
---
.../apache/hadoop/hbase/master/balancer/DoubleArrayCost.java | 11 ++++++++++-
.../hadoop/hbase/master/balancer/StochasticLoadBalancer.java | 12 ++++++------
.../hadoop/hbase/master/balancer/TestDoubleArrayCost.java | 6 +++---
3 files changed, 19 insertions(+), 10 deletions(-)
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DoubleArrayCost.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DoubleArrayCost.java
index f370b80..154adcd 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DoubleArrayCost.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/DoubleArrayCost.java
@@ -43,7 +43,16 @@ final class DoubleArrayCost {
}
}
- void setCosts(Consumer<double[]> consumer) {
+ /**
+ * We do not want to introduce a getCosts method to let upper layer get the
cost array directly,
+ * so here we introduce this method to take a {@link Consumer} as parameter,
where we will pass
+ * the actual cost array in, so you can change the element of the cost array
in the
+ * {@link Consumer} implementation.
+ * <p/>
+ * Usually, in prepare method, you need to fill all the elements of the cost
array, while in
+ * regionMoved method, you just need to update the element for the effect
region servers.
+ */
+ void applyCostsChange(Consumer<double[]> consumer) {
consumer.accept(costs);
costsChanged = true;
}
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 84ed974..b51eb26 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
@@ -864,7 +864,7 @@ public class StochasticLoadBalancer extends
BaseLoadBalancer {
void init(Cluster cluster) {
super.init(cluster);
cost.prepare(cluster.numServers);
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
for (int i = 0; i < cluster.numServers; i++) {
costs[i] = cluster.regionsPerServer[i].length;
}
@@ -886,7 +886,7 @@ public class StochasticLoadBalancer extends
BaseLoadBalancer {
@Override
protected void regionMoved(int region, int oldServer, int newServer) {
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
costs[oldServer] = cluster.regionsPerServer[oldServer].length;
costs[newServer] = cluster.regionsPerServer[newServer].length;
});
@@ -928,7 +928,7 @@ public class StochasticLoadBalancer extends
BaseLoadBalancer {
return;
}
cost.prepare(cluster.numServers);
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
for (int i = 0; i < costs.length; i++) {
costs[i] = computeCostForRegionServer(i);
}
@@ -942,7 +942,7 @@ public class StochasticLoadBalancer extends
BaseLoadBalancer {
@Override
protected void regionMoved(int region, int oldServer, int newServer) {
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
costs[oldServer] = computeCostForRegionServer(oldServer);
costs[newServer] = computeCostForRegionServer(newServer);
});
@@ -1110,7 +1110,7 @@ public class StochasticLoadBalancer extends
BaseLoadBalancer {
void init(Cluster cluster) {
super.init(cluster);
cost.prepare(cluster.numServers);
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
for (int i = 0; i < costs.length; i++) {
costs[i] = computeCostForRegionServer(i);
}
@@ -1120,7 +1120,7 @@ public class StochasticLoadBalancer extends
BaseLoadBalancer {
@Override
protected void regionMoved(int region, int oldServer, int newServer) {
// recompute the stat for the given two region servers
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
costs[oldServer] = computeCostForRegionServer(oldServer);
costs[newServer] = computeCostForRegionServer(newServer);
});
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
index 8dd1e49..f0b8db8 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestDoubleArrayCost.java
@@ -38,7 +38,7 @@ public class TestDoubleArrayCost {
DoubleArrayCost cost = new DoubleArrayCost();
cost.prepare(100);
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
for (int i = 0; i < 100; i++) {
costs[i] = 10;
}
@@ -46,7 +46,7 @@ public class TestDoubleArrayCost {
assertEquals(0, cost.cost(), 0.01);
cost.prepare(101);
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
for (int i = 0; i < 100; i++) {
costs[i] = 0;
}
@@ -55,7 +55,7 @@ public class TestDoubleArrayCost {
assertEquals(1, cost.cost(), 0.01);
cost.prepare(200);
- cost.setCosts(costs -> {
+ cost.applyCostsChange(costs -> {
for (int i = 0; i < 100; i++) {
costs[i] = 0;
costs[i + 100] = 100;