Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -188,18 +188,23 @@ public void clusterChanged(ClusterChangedEvent event) {
return new Tuple<>(savedClusterState, metadataVersion);
}

private Tuple<CountDownLatch, AtomicLong> setupClusterStateListener(String node, long version) {
private Tuple<CountDownLatch, AtomicLong> setupClusterStateListener(String node, long fileSettingsVersion) {
ClusterService clusterService = internalCluster().clusterService(node);
CountDownLatch savedClusterState = new CountDownLatch(1);
AtomicLong metadataVersion = new AtomicLong(-1);
clusterService.addListener(new ClusterStateListener() {
@Override
public void clusterChanged(ClusterChangedEvent event) {
ReservedStateMetadata reservedState = event.state().metadata().reservedStateMetadata().get(FileSettingsService.NAMESPACE);
if (reservedState != null && reservedState.version() == version) {
if (reservedState != null && reservedState.version() == fileSettingsVersion) {
clusterService.removeListener(this);
metadataVersion.set(event.state().metadata().version());
savedClusterState.countDown();
logger.info(
"done waiting for file settings [version: {}, metadata version: {}]",
event.state().version(),
event.state().metadata().version()
);
}
}
});
Expand Down Expand Up @@ -265,15 +270,16 @@ public void testSettingsAppliedOnStart() throws Exception {
FileSettingsService dataFileSettingsService = internalCluster().getInstance(FileSettingsService.class, dataNode);

assertFalse(dataFileSettingsService.watching());
var savedClusterState = setupClusterStateListener(dataNode, versionCounter.incrementAndGet());
long expectedVersion = versionCounter.incrementAndGet();

// In internal cluster tests, the nodes share the config directory, so when we write with the data node path
// the master will pick it up on start
writeJSONFile(dataNode, testJSON, logger, versionCounter.get());
writeJSONFile(dataNode, testJSON, logger, expectedVersion);

logger.info("--> start master node");
final String masterNode = internalCluster().startMasterOnlyNode();
awaitMasterNode(internalCluster().getNonMasterNodeName(), masterNode);
var savedClusterState = setupClusterStateListener(masterNode, expectedVersion);

FileSettingsService masterFileSettingsService = internalCluster().getInstance(FileSettingsService.class, masterNode);

Expand Down