@@ -118,6 +118,7 @@ public class ClusterApplierService extends AbstractLifecycleComponent implements
118
118
119
119
private final Collection <ClusterStateListener > clusterStateListeners = new CopyOnWriteArrayList <>();
120
120
private final Map <TimeoutClusterStateListener , NotifyTimeout > timeoutClusterStateListeners = new ConcurrentHashMap <>();
121
+ private final AtomicReference <ClusterState > publishState ; // last published state
121
122
122
123
private final AtomicReference <ClusterState > state ; // last applied state
123
124
@@ -139,6 +140,7 @@ public ClusterApplierService(
139
140
) {
140
141
this .clusterSettings = clusterSettings ;
141
142
this .threadPool = threadPool ;
143
+ this .publishState = new AtomicReference <>();
142
144
this .state = new AtomicReference <>();
143
145
this .nodeName = nodeName ;
144
146
@@ -232,6 +234,10 @@ public ClusterState state() {
232
234
return clusterState ;
233
235
}
234
236
237
+ public ClusterState publishState () {
238
+ return publishState .get ();
239
+ }
240
+
235
241
/**
236
242
* Returns true if the appliedClusterState is not null
237
243
*/
@@ -367,6 +373,14 @@ public ThreadPool threadPool() {
367
373
return threadPool ;
368
374
}
369
375
376
+ @ Override
377
+ public void onPublishClusterState (final String source , final Supplier <ClusterState > clusterStateSupplier ) {
378
+ ClusterState nextState = clusterStateSupplier .get ();
379
+ if (nextState != null ) {
380
+ publishState .set (nextState );
381
+ }
382
+ }
383
+
370
384
@ Override
371
385
public void onNewClusterState (
372
386
final String source ,
0 commit comments