Do not set up NodeAndClusterIdStateListener in test (#38110)

When extending ESIntegTestCase are run on the same jvm, the static field in
NodeAndClusterIdConverter will throw an AlreadySet exceptions.
overriding the configuration method from Node.configureNodeAndClusterIdStateListener in the MockNode will prevent the listener registration from happening
relates #32850
This commit is contained in:
Przemyslaw Gomulka 2019-01-31 18:59:40 +01:00 committed by GitHub
parent be381b4525
commit 28b5c7ce78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 2 deletions

View File

@ -684,8 +684,7 @@ public class Node implements Closeable {
transportService.acceptIncomingRequests();
discovery.startInitialJoin();
final TimeValue initialStateTimeout = DiscoverySettings.INITIAL_STATE_TIMEOUT_SETTING.get(settings);
NodeAndClusterIdStateListener.getAndSetNodeIdAndClusterId(clusterService,
injector.getInstance(ThreadPool.class).getThreadContext());
configureNodeAndClusterIdStateListener(clusterService);
if (initialStateTimeout.millis() > 0) {
final ThreadPool thread = injector.getInstance(ThreadPool.class);
@ -737,6 +736,11 @@ public class Node implements Closeable {
return this;
}
protected void configureNodeAndClusterIdStateListener(ClusterService clusterService) {
NodeAndClusterIdStateListener.getAndSetNodeIdAndClusterId(clusterService,
injector.getInstance(ThreadPool.class).getThreadContext());
}
private Node stop() {
if (!lifecycle.moveToStopped()) {
return this;

View File

@ -174,4 +174,9 @@ public class MockNode extends Node {
return new MockHttpTransport();
}
}
@Override
protected void configureNodeAndClusterIdStateListener(ClusterService clusterService) {
//do not configure this in tests as this is causing SetOnce to throw exceptions when jvm is used for multiple tests
}
}