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

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


The following commit(s) were added to refs/heads/branch-2.4 by this push:
     new 5159eae  HBASE-25995 Change the method name for 
DoubleArrayCost.setCosts (#3381)
5159eae is described below

commit 5159eaec129d963ad1df90d89d467b6e0c353e01
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 26d8d43..590ea4b 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
@@ -959,7 +959,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;
         }
@@ -981,7 +981,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;
       });
@@ -1023,7 +1023,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);
         }
@@ -1037,7 +1037,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);
       });
@@ -1205,7 +1205,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);
         }
@@ -1215,7 +1215,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;

Reply via email to