This is an automated email from the ASF dual-hosted git repository. rmattingly pushed a commit to branch HBASE-29262-branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git
commit 32fe9d35cc59b2debfbc73cf9f87ef3b02925f56 Author: Ray Mattingly <[email protected]> AuthorDate: Tue Apr 15 09:24:43 2025 -0400 HBASE-29262 StochasticLoadBalancer should use the CostFunction epsilon when evaluating whether a move improved costs (#6907) Co-authored-by: Ray Mattingly <[email protected]> Signed-off-by: Nick Dimiduk <[email protected]> --- .../apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 44e5aad3a6b..689c65fd6ca 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 @@ -730,8 +730,12 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { newCost = computeCost(cluster, currentCost); + double costImprovement = currentCost - newCost; + double minimumImprovement = + Math.max(CostFunction.getCostEpsilon(currentCost), CostFunction.getCostEpsilon(newCost)); + boolean costsImproved = costImprovement > minimumImprovement; boolean conditionalsSimilarCostsImproved = - (newCost < currentCost && conditionalViolationsChange == 0 && !isViolatingConditionals); + (costsImproved && conditionalViolationsChange == 0 && !isViolatingConditionals); // Our first priority is to reduce conditional violations // Our second priority is to reduce balancer cost // change, regardless of cost change
