diff --git a/server/src/main/java/org/elasticsearch/bootstrap/BootstrapChecks.java b/server/src/main/java/org/elasticsearch/bootstrap/BootstrapChecks.java index c34d84d7883..90b1ef56237 100644 --- a/server/src/main/java/org/elasticsearch/bootstrap/BootstrapChecks.java +++ b/server/src/main/java/org/elasticsearch/bootstrap/BootstrapChecks.java @@ -739,6 +739,11 @@ final class BootstrapChecks { static class DiscoveryConfiguredCheck implements BootstrapCheck { @Override public BootstrapCheckResult check(BootstrapContext context) { + if (DiscoveryModule.ZEN_DISCOVERY_TYPE.equals(DiscoveryModule.DISCOVERY_TYPE_SETTING.get(context.settings()))) { + return BootstrapCheckResult.failure(String.format(Locale.ROOT, + "discovery type [%s] is unsuitable for production use", DiscoveryModule.ZEN_DISCOVERY_TYPE)); + } + if (DiscoveryModule.ZEN2_DISCOVERY_TYPE.equals(DiscoveryModule.DISCOVERY_TYPE_SETTING.get(context.settings())) == false) { return BootstrapCheckResult.success(); } diff --git a/server/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java b/server/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java index 6cccf9aea3d..fc6218f70f5 100644 --- a/server/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java +++ b/server/src/main/java/org/elasticsearch/discovery/DiscoveryModule.java @@ -19,8 +19,9 @@ package org.elasticsearch.discovery; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.elasticsearch.Assertions; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.coordination.Coordinator; import org.elasticsearch.cluster.coordination.ElectionStrategy; @@ -67,7 +68,7 @@ import static org.elasticsearch.node.Node.NODE_NAME_SETTING; public class DiscoveryModule { private static final Logger logger = LogManager.getLogger(DiscoveryModule.class); - public static final String ZEN_DISCOVERY_TYPE = "legacy-zen"; + public static final String ZEN_DISCOVERY_TYPE = "legacy-zen-for-testing-only-do-not-use"; public static final String ZEN2_DISCOVERY_TYPE = "zen"; public static final String SINGLE_NODE_DISCOVERY_TYPE = "single-node"; @@ -155,7 +156,7 @@ public class DiscoveryModule { transportService, namedWriteableRegistry, allocationService, masterService, gatewayMetaState::getPersistedState, seedHostsProvider, clusterApplier, joinValidators, new Random(Randomness.get().nextLong()), rerouteService, electionStrategy, nodeHealthService); - } else if (ZEN_DISCOVERY_TYPE.equals(discoveryType)) { + } else if (Assertions.ENABLED && ZEN_DISCOVERY_TYPE.equals(discoveryType)) { discovery = new ZenDiscovery(settings, threadPool, transportService, namedWriteableRegistry, masterService, clusterApplier, clusterSettings, seedHostsProvider, allocationService, joinValidators, rerouteService); } else { diff --git a/server/src/test/java/org/elasticsearch/bootstrap/BootstrapChecksTests.java b/server/src/test/java/org/elasticsearch/bootstrap/BootstrapChecksTests.java index 0bcef6ebc81..2b4d697271c 100644 --- a/server/src/test/java/org/elasticsearch/bootstrap/BootstrapChecksTests.java +++ b/server/src/test/java/org/elasticsearch/bootstrap/BootstrapChecksTests.java @@ -723,6 +723,9 @@ public class BootstrapChecksTests extends AbstractBootstrapCheckTestCase { public void testDiscoveryConfiguredCheck() throws NodeValidationException { final List checks = Collections.singletonList(new BootstrapChecks.DiscoveryConfiguredCheck()); + final BootstrapContext zen1Context = createTestContext(Settings.builder() + .put(DiscoveryModule.DISCOVERY_TYPE_SETTING.getKey(), ZEN_DISCOVERY_TYPE).build(), Metadata.EMPTY_METADATA); + final BootstrapContext zen2Context = createTestContext(Settings.builder() .put(DiscoveryModule.DISCOVERY_TYPE_SETTING.getKey(), ZEN2_DISCOVERY_TYPE).build(), Metadata.EMPTY_METADATA); @@ -731,7 +734,11 @@ public class BootstrapChecksTests extends AbstractBootstrapCheckTestCase { // not enforced for non-zen2 discovery BootstrapChecks.check(createTestContext(Settings.builder().put(DiscoveryModule.DISCOVERY_TYPE_SETTING.getKey(), - randomFrom(ZEN_DISCOVERY_TYPE, "single-node", randomAlphaOfLength(5))).build(), Metadata.EMPTY_METADATA), true, checks); + randomFrom("single-node", randomAlphaOfLength(5))).build(), Metadata.EMPTY_METADATA), true, checks); + + assertThat(expectThrows(NodeValidationException.class, + () -> BootstrapChecks.check(zen1Context, true, checks)), + hasToString(containsString("discovery type [legacy-zen-for-testing-only-do-not-use] is unsuitable for production use"))); final NodeValidationException e = expectThrows(NodeValidationException.class, () -> BootstrapChecks.check(zen2Context, true, checks));