@@ -196,21 +196,18 @@ public void clusterChanged(ClusterChangedEvent event) {
196
196
return new Tuple <>(savedClusterState , metadataVersion );
197
197
}
198
198
199
- private Tuple <CountDownLatch , AtomicLong > setupClusterStateListener (String node ) {
199
+ private Tuple <CountDownLatch , AtomicLong > setupClusterStateListener (String node , long version ) {
200
200
ClusterService clusterService = internalCluster ().clusterService (node );
201
201
CountDownLatch savedClusterState = new CountDownLatch (1 );
202
202
AtomicLong metadataVersion = new AtomicLong (-1 );
203
203
clusterService .addListener (new ClusterStateListener () {
204
204
@ Override
205
205
public void clusterChanged (ClusterChangedEvent event ) {
206
206
ReservedStateMetadata reservedState = event .state ().metadata ().reservedStateMetadata ().get (FileSettingsService .NAMESPACE );
207
- if (reservedState != null ) {
208
- ReservedStateHandlerMetadata handlerMetadata = reservedState .handlers ().get (ReservedClusterSettingsAction .NAME );
209
- if (handlerMetadata != null && handlerMetadata .keys ().contains ("indices.recovery.max_bytes_per_sec" )) {
210
- clusterService .removeListener (this );
211
- metadataVersion .set (event .state ().metadata ().version ());
212
- savedClusterState .countDown ();
213
- }
207
+ if (reservedState != null && reservedState .version () == version ) {
208
+ clusterService .removeListener (this );
209
+ metadataVersion .set (event .state ().metadata ().version ());
210
+ savedClusterState .countDown ();
214
211
}
215
212
}
216
213
});
@@ -258,14 +255,14 @@ public void testSettingsApplied() throws Exception {
258
255
logger .info ("--> start master node" );
259
256
final String masterNode = internalCluster ().startMasterOnlyNode ();
260
257
assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
261
- var savedClusterState = setupClusterStateListener (masterNode );
258
+ var savedClusterState = setupClusterStateListener (masterNode , versionCounter . incrementAndGet () );
262
259
263
260
FileSettingsService masterFileSettingsService = internalCluster ().getInstance (FileSettingsService .class , masterNode );
264
261
265
262
assertBusy (() -> assertTrue (masterFileSettingsService .watching ()));
266
263
assertFalse (dataFileSettingsService .watching ());
267
264
268
- writeJSONFile (masterNode , testJSON , logger , versionCounter .incrementAndGet ());
265
+ writeJSONFile (masterNode , testJSON , logger , versionCounter .get ());
269
266
assertClusterStateSaveOK (savedClusterState .v1 (), savedClusterState .v2 (), "50mb" );
270
267
}
271
268
@@ -276,11 +273,11 @@ public void testSettingsAppliedOnStart() throws Exception {
276
273
FileSettingsService dataFileSettingsService = internalCluster ().getInstance (FileSettingsService .class , dataNode );
277
274
278
275
assertFalse (dataFileSettingsService .watching ());
279
- var savedClusterState = setupClusterStateListener (dataNode );
276
+ var savedClusterState = setupClusterStateListener (dataNode , versionCounter . incrementAndGet () );
280
277
281
278
// In internal cluster tests, the nodes share the config directory, so when we write with the data node path
282
279
// the master will pick it up on start
283
- writeJSONFile (dataNode , testJSON , logger , versionCounter .incrementAndGet ());
280
+ writeJSONFile (dataNode , testJSON , logger , versionCounter .get ());
284
281
285
282
logger .info ("--> start master node" );
286
283
final String masterNode = internalCluster ().startMasterOnlyNode ();
@@ -301,14 +298,14 @@ public void testReservedStatePersistsOnRestart() throws Exception {
301
298
Settings .builder ().put (INITIAL_STATE_TIMEOUT_SETTING .getKey (), "0s" ).build ()
302
299
);
303
300
assertMasterNode (internalCluster ().masterClient (), masterNode );
304
- var savedClusterState = setupClusterStateListener (masterNode );
301
+ var savedClusterState = setupClusterStateListener (masterNode , versionCounter . incrementAndGet () );
305
302
306
303
FileSettingsService masterFileSettingsService = internalCluster ().getInstance (FileSettingsService .class , masterNode );
307
304
308
305
assertBusy (() -> assertTrue (masterFileSettingsService .watching ()));
309
306
310
307
logger .info ("--> write some settings" );
311
- writeJSONFile (masterNode , testJSON , logger , versionCounter .incrementAndGet ());
308
+ writeJSONFile (masterNode , testJSON , logger , versionCounter .get ());
312
309
assertClusterStateSaveOK (savedClusterState .v1 (), savedClusterState .v2 (), "50mb" );
313
310
314
311
logger .info ("--> restart master" );
@@ -476,12 +473,12 @@ public void testSettingsAppliedOnMasterReElection() throws Exception {
476
473
assertFalse (master1FS .watching ());
477
474
assertFalse (master2FS .watching ());
478
475
479
- var savedClusterState = setupClusterStateListener (masterNode );
476
+ var savedClusterState = setupClusterStateListener (masterNode , versionCounter . incrementAndGet () );
480
477
FileSettingsService masterFileSettingsService = internalCluster ().getInstance (FileSettingsService .class , masterNode );
481
478
482
479
assertBusy (() -> assertTrue (masterFileSettingsService .watching ()));
483
480
484
- writeJSONFile (masterNode , testJSON , logger , versionCounter .incrementAndGet ());
481
+ writeJSONFile (masterNode , testJSON , logger , versionCounter .get ());
485
482
assertClusterStateSaveOK (savedClusterState .v1 (), savedClusterState .v2 (), "50mb" );
486
483
487
484
internalCluster ().stopCurrentMasterNode ();
@@ -501,8 +498,8 @@ public void testSettingsAppliedOnMasterReElection() throws Exception {
501
498
boolean awaitSuccessful = savedClusterState .v1 ().await (20 , TimeUnit .SECONDS );
502
499
assertTrue (awaitSuccessful );
503
500
504
- savedClusterState = setupClusterStateListener (internalCluster ().getMasterName ());
505
- writeJSONFile (internalCluster ().getMasterName (), testJSON43mb , logger , versionCounter .incrementAndGet ());
501
+ savedClusterState = setupClusterStateListener (internalCluster ().getMasterName (), versionCounter . incrementAndGet () );
502
+ writeJSONFile (internalCluster ().getMasterName (), testJSON43mb , logger , versionCounter .get ());
506
503
507
504
assertClusterStateSaveOK (savedClusterState .v1 (), savedClusterState .v2 (), "43mb" );
508
505
}
@@ -515,21 +512,21 @@ public void testSymlinkUpdateTriggerReload() throws Exception {
515
512
assertBusy (() -> assertTrue (masterFileSettingsService .watching ()));
516
513
517
514
{
518
- var savedClusterState = setupClusterStateListener (masterNode );
515
+ var savedClusterState = setupClusterStateListener (masterNode , versionCounter . incrementAndGet () );
519
516
// Create the settings.json as a symlink to simulate k8 setup
520
517
// settings.json -> ..data/settings.json
521
518
// ..data -> ..TIMESTAMP_TEMP_FOLDER_1
522
519
var fileDir = Files .createDirectories (baseDir .resolve ("..TIMESTAMP_TEMP_FOLDER_1" ));
523
- writeJSONFile (masterNode , testJSON , logger , versionCounter .incrementAndGet (), fileDir .resolve ("settings.json" ));
520
+ writeJSONFile (masterNode , testJSON , logger , versionCounter .get (), fileDir .resolve ("settings.json" ));
524
521
var dataDir = Files .createSymbolicLink (baseDir .resolve ("..data" ), fileDir .getFileName ());
525
522
Files .createSymbolicLink (baseDir .resolve ("settings.json" ), dataDir .getFileName ().resolve ("settings.json" ));
526
523
assertClusterStateSaveOK (savedClusterState .v1 (), savedClusterState .v2 (), "50mb" );
527
524
}
528
525
{
529
- var savedClusterState = setupClusterStateListener (masterNode );
526
+ var savedClusterState = setupClusterStateListener (masterNode , versionCounter . incrementAndGet () );
530
527
// Update ..data symlink to ..data -> ..TIMESTAMP_TEMP_FOLDER_2 to simulate kubernetes secret update
531
528
var fileDir = Files .createDirectories (baseDir .resolve ("..TIMESTAMP_TEMP_FOLDER_2" ));
532
- writeJSONFile (masterNode , testJSON43mb , logger , versionCounter .incrementAndGet (), fileDir .resolve ("settings.json" ));
529
+ writeJSONFile (masterNode , testJSON43mb , logger , versionCounter .get (), fileDir .resolve ("settings.json" ));
533
530
Files .deleteIfExists (baseDir .resolve ("..data" ));
534
531
Files .createSymbolicLink (baseDir .resolve ("..data" ), fileDir .getFileName ());
535
532
assertClusterStateSaveOK (savedClusterState .v1 (), savedClusterState .v2 (), "43mb" );
0 commit comments