sunhelly commented on a change in pull request #3024:
URL: https://github.com/apache/hbase/pull/3024#discussion_r589199906



##########
File path: 
hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/CandidateGenerator.java
##########
@@ -104,14 +106,19 @@ int pickOtherRandomRack(BaseLoadBalancer.Cluster cluster, 
int rackIndex) {
     if (thisServer < 0 || otherServer < 0) {
       return BaseLoadBalancer.Cluster.NullAction;
     }
-
-    // Decide who is most likely to need another region
-    int thisRegionCount = cluster.getNumRegions(thisServer);
-    int otherRegionCount = cluster.getNumRegions(otherServer);
-
-    // Assign the chance based upon the above
-    double thisChance = (thisRegionCount > otherRegionCount) ? 0 : 0.5;
-    double otherChance = (thisRegionCount <= otherRegionCount) ? 0 : 0.5;
+    double thisChance = 0.5;
+    double otherChance = 0.5;
+    if (getConf() == null || getConf().getBoolean(
+      HBASE_MASTER_BALANCER_RANDOM_PICK_REGIONS_WITH_CONSIDER_COUNT_BALANCE, 
true)) {

Review comment:
       Yes, I can change the test to make the case pass.
   I added this config because I think the random pick in default candidate 
with just consider region count may be unexpected. There are cost functions in 
balancer, which means we can change the cost of the functions to get a balance 
of region read/write loads, such as ReadRequestCostFunction. When these costs 
are considered, the region count between regionservers may be not fair like the 
test case, but we need the count skew to make read/write loads fairly. 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to