1515import org .elasticsearch .cluster .routing .RoutingNode ;
1616import org .elasticsearch .cluster .routing .RoutingNodes ;
1717import org .elasticsearch .cluster .routing .ShardRouting ;
18- import org .elasticsearch .cluster .routing .allocation .allocator .BalancedShardsAllocator ;
18+ import org .elasticsearch .cluster .routing .allocation .allocator .BalancerSettings ;
1919import org .elasticsearch .cluster .routing .allocation .allocator .DesiredBalance ;
2020import org .elasticsearch .cluster .routing .allocation .allocator .WeightFunction ;
21- import org .elasticsearch .common .settings .ClusterSettings ;
2221import org .elasticsearch .common .util .Maps ;
2322import org .elasticsearch .core .Nullable ;
2423
3029public class NodeAllocationStatsAndWeightsCalculator {
3130 private final WriteLoadForecaster writeLoadForecaster ;
3231
33- private volatile float indexBalanceFactor ;
34- private volatile float shardBalanceFactor ;
35- private volatile float writeLoadBalanceFactor ;
36- private volatile float diskUsageBalanceFactor ;
32+ private final BalancerSettings balancerSettings ;
3733
3834 /**
3935 * Node shard allocation stats and the total node weight.
@@ -47,18 +43,9 @@ public record NodeAllocationStatsAndWeight(
4743 float currentNodeWeight
4844 ) {}
4945
50- public NodeAllocationStatsAndWeightsCalculator (WriteLoadForecaster writeLoadForecaster , ClusterSettings clusterSettings ) {
46+ public NodeAllocationStatsAndWeightsCalculator (WriteLoadForecaster writeLoadForecaster , BalancerSettings balancerSettings ) {
5147 this .writeLoadForecaster = writeLoadForecaster ;
52- clusterSettings .initializeAndWatch (BalancedShardsAllocator .SHARD_BALANCE_FACTOR_SETTING , value -> this .shardBalanceFactor = value );
53- clusterSettings .initializeAndWatch (BalancedShardsAllocator .INDEX_BALANCE_FACTOR_SETTING , value -> this .indexBalanceFactor = value );
54- clusterSettings .initializeAndWatch (
55- BalancedShardsAllocator .WRITE_LOAD_BALANCE_FACTOR_SETTING ,
56- value -> this .writeLoadBalanceFactor = value
57- );
58- clusterSettings .initializeAndWatch (
59- BalancedShardsAllocator .DISK_USAGE_BALANCE_FACTOR_SETTING ,
60- value -> this .diskUsageBalanceFactor = value
61- );
48+ this .balancerSettings = balancerSettings ;
6249 }
6350
6451 /**
@@ -74,7 +61,12 @@ public Map<String, NodeAllocationStatsAndWeight> nodesAllocationStatsAndWeights(
7461 // must not use licensed features when just starting up
7562 writeLoadForecaster .refreshLicense ();
7663 }
77- var weightFunction = new WeightFunction (shardBalanceFactor , indexBalanceFactor , writeLoadBalanceFactor , diskUsageBalanceFactor );
64+ var weightFunction = new WeightFunction (
65+ balancerSettings .getShardBalanceFactor (),
66+ balancerSettings .getIndexBalanceFactor (),
67+ balancerSettings .getWriteLoadBalanceFactor (),
68+ balancerSettings .getDiskUsageBalanceFactor ()
69+ );
7870 var avgShardsPerNode = WeightFunction .avgShardPerNode (metadata , routingNodes );
7971 var avgWriteLoadPerNode = WeightFunction .avgWriteLoadPerNode (writeLoadForecaster , metadata , routingNodes );
8072 var avgDiskUsageInBytesPerNode = WeightFunction .avgDiskUsageInBytesPerNode (clusterInfo , metadata , routingNodes );
0 commit comments