2626public  class  AllocationBalancingRoundMetrics  {
2727
2828    public  static  final  String  NUMBER_OF_BALANCING_ROUNDS_METRIC_NAME  = "es.allocator.balancing_round.balancing_rounds" ;
29+ 
2930    public  static  final  String  NUMBER_OF_SHARD_MOVES_METRIC_NAME  = "es.allocator.balancing_round.shard_moves" ;
3031
3132    public  static  final  String  NUMBER_OF_SHARDS_METRIC_NAME  = "es.allocator.balancing_round.shard_count" ;
@@ -45,11 +46,17 @@ public class AllocationBalancingRoundMetrics {
4546     */ 
4647    private  final  AtomicReference <BalancingRoundSummary .CombinedBalancingRoundSummary > combinedSummariesRef  = new  AtomicReference <>();
4748
49+     /** 
50+      * Whether metrics sending is enabled 
51+      */ 
52+     private  volatile  boolean  enableSending  = false ;
53+ 
4854    public  static  final  AllocationBalancingRoundMetrics  NOOP  = new  AllocationBalancingRoundMetrics (MeterRegistry .NOOP );
4955
5056    private  final  MeterRegistry  meterRegistry ;
5157
5258    public  AllocationBalancingRoundMetrics (MeterRegistry  meterRegistry ) {
59+         this .combinedSummariesRef .set (BalancingRoundSummary .CombinedBalancingRoundSummary .EMPTY_RESULTS );
5360        this .meterRegistry  = meterRegistry ;
5461
5562        meterRegistry .registerLongsGauge (
@@ -69,7 +76,7 @@ public AllocationBalancingRoundMetrics(MeterRegistry meterRegistry) {
6976        meterRegistry .registerLongsGauge (NUMBER_OF_SHARDS_METRIC_NAME , "Current number of shards" , "unit" , this ::getShardCount );
7077        meterRegistry .registerLongsGauge (
7178            NUMBER_OF_SHARDS_DELTA_METRIC_NAME ,
72-             "Current number of shard moves " ,
79+             "Current number of shards delta " ,
7380            "{shard}" ,
7481            this ::getShardCountDelta 
7582        );
@@ -83,48 +90,55 @@ public AllocationBalancingRoundMetrics(MeterRegistry meterRegistry) {
8390        );
8491
8592        meterRegistry .registerDoublesGauge (WRITE_LOAD_METRIC_NAME , "Write load" , "1.0" , this ::getWriteLoad );
86-         meterRegistry .registerDoublesGauge (WRITE_LOAD_DELTA_METRIC_NAME , "Write load" , "1.0" , this ::getWriteLoadDelta );
93+         meterRegistry .registerDoublesGauge (WRITE_LOAD_DELTA_METRIC_NAME , "Write load delta " , "1.0" , this ::getWriteLoadDelta );
8794
8895        meterRegistry .registerDoublesGauge (TOTAL_WEIGHT_METRIC_NAME , "Total weight" , "1.0" , this ::getTotalWeight );
8996        meterRegistry .registerDoublesGauge (TOTAL_WEIGHT_DELTA_METRIC_NAME , "Total weight delta" , "1.0" , this ::getTotalWeightDelta );
9097    }
9198
92-     public  void  updateRoundMetrics (BalancingRoundSummary .CombinedBalancingRoundSummary  summary ) {
99+     public  void  setEnableSending (boolean  enableSending ) {
100+         this .enableSending  = enableSending ;
101+     }
102+ 
103+     public  void  updateBalancingRoundMetrics (BalancingRoundSummary .CombinedBalancingRoundSummary  summary ) {
104+         assert  summary  != null  : "balancing round metrics cannot be null" ;
93105        combinedSummariesRef .set (summary );
94106    }
95107
96-     public  void  clearRoundMetrics () {
97-         combinedSummariesRef .set (null );
108+     public  void  clearBalancingRoundMetrics () {
109+         combinedSummariesRef .set (BalancingRoundSummary . CombinedBalancingRoundSummary . EMPTY_RESULTS );
98110    }
99111
100112    private  Map <String , Object > getNodeAttributes (String  nodeId ) {
101113        return  Map .of ("node_id" , nodeId );
102114    }
103115
104116    private  List <LongWithAttributes > getBalancingRounds () {
105-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
106-         if  (combinedSummary  == null ) {
117+         if  (enableSending  == false ) {
107118            return  Collections .emptyList ();
108119        }
120+ 
121+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
109122        LongWithAttributes  result  = new  LongWithAttributes (combinedSummary .numberOfShardMoves ());
110123        return  List .of (result );
111124    }
112125
113126    private  List <LongWithAttributes > getShardMoves () {
114-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
115-         if  (combinedSummary  == null ) {
127+         if  (enableSending  == false ) {
116128            return  Collections .emptyList ();
117129        }
130+ 
131+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
118132        LongWithAttributes  result  = new  LongWithAttributes (combinedSummary .numberOfShardMoves ());
119133        return  List .of (result );
120134    }
121135
122136    private  List <LongWithAttributes > getShardCount () {
123-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
124-         if  (combinedSummary  == null ) {
137+         if  (enableSending  == false ) {
125138            return  Collections .emptyList ();
126139        }
127140
141+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
128142        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
129143        List <LongWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
130144        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -134,11 +148,11 @@ private List<LongWithAttributes> getShardCount() {
134148    }
135149
136150    private  List <LongWithAttributes > getShardCountDelta () {
137-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
138-         if  (combinedSummary  == null ) {
151+         if  (enableSending  == false ) {
139152            return  Collections .emptyList ();
140153        }
141154
155+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
142156        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
143157        List <LongWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
144158        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -150,11 +164,11 @@ private List<LongWithAttributes> getShardCountDelta() {
150164    }
151165
152166    private  List <DoubleWithAttributes > getDiskUsage () {
153-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
154-         if  (combinedSummary  == null ) {
167+         if  (enableSending  == false ) {
155168            return  Collections .emptyList ();
156169        }
157170
171+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
158172        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
159173        List <DoubleWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
160174        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -166,11 +180,11 @@ private List<DoubleWithAttributes> getDiskUsage() {
166180    }
167181
168182    private  List <DoubleWithAttributes > getDiskUsageDelta () {
169-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
170-         if  (combinedSummary  == null ) {
183+         if  (enableSending  == false ) {
171184            return  Collections .emptyList ();
172185        }
173186
187+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
174188        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
175189        List <DoubleWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
176190        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -185,11 +199,11 @@ private List<DoubleWithAttributes> getDiskUsageDelta() {
185199    }
186200
187201    private  List <DoubleWithAttributes > getWriteLoad () {
188-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
189-         if  (combinedSummary  == null ) {
202+         if  (enableSending  == false ) {
190203            return  Collections .emptyList ();
191204        }
192205
206+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
193207        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
194208        List <DoubleWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
195209        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -201,11 +215,11 @@ private List<DoubleWithAttributes> getWriteLoad() {
201215    }
202216
203217    private  List <DoubleWithAttributes > getWriteLoadDelta () {
204-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
205-         if  (combinedSummary  == null ) {
218+         if  (enableSending  == false ) {
206219            return  Collections .emptyList ();
207220        }
208221
222+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
209223        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
210224        List <DoubleWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
211225        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -217,11 +231,11 @@ private List<DoubleWithAttributes> getWriteLoadDelta() {
217231    }
218232
219233    private  List <DoubleWithAttributes > getTotalWeight () {
220-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
221-         if  (combinedSummary  == null ) {
234+         if  (enableSending  == false ) {
222235            return  Collections .emptyList ();
223236        }
224237
238+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
225239        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
226240        List <DoubleWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
227241        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
@@ -233,11 +247,11 @@ private List<DoubleWithAttributes> getTotalWeight() {
233247    }
234248
235249    private  List <DoubleWithAttributes > getTotalWeightDelta () {
236-         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
237-         if  (combinedSummary  == null ) {
250+         if  (enableSending  == false ) {
238251            return  Collections .emptyList ();
239252        }
240253
254+         final  BalancingRoundSummary .CombinedBalancingRoundSummary  combinedSummary  = combinedSummariesRef .get ();
241255        Map <String , NodesWeightsChanges > nodeNameToWeightChanges  = combinedSummary .nodeNameToWeightChanges ();
242256        List <DoubleWithAttributes > metrics  = new  ArrayList <>(nodeNameToWeightChanges .size ());
243257        for  (var  nodeWeights  : nodeNameToWeightChanges .entrySet ()) {
0 commit comments