Add production warning for pre-release builds
This commit adds a usage warning when Elasticsearch is started with a pre-release build. Relates #20674
This commit is contained in:
parent
1e6a882ab9
commit
3c8ff45917
|
@ -352,4 +352,9 @@ public class Version {
|
|||
public boolean isRC() {
|
||||
return build > 50 && build < 99;
|
||||
}
|
||||
|
||||
public boolean isRelease() {
|
||||
return build == 99;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -104,9 +104,9 @@ import org.elasticsearch.plugins.ClusterPlugin;
|
|||
import org.elasticsearch.plugins.DiscoveryPlugin;
|
||||
import org.elasticsearch.plugins.IngestPlugin;
|
||||
import org.elasticsearch.plugins.MapperPlugin;
|
||||
import org.elasticsearch.plugins.MetaDataUpgrader;
|
||||
import org.elasticsearch.plugins.NetworkPlugin;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.plugins.MetaDataUpgrader;
|
||||
import org.elasticsearch.plugins.PluginsService;
|
||||
import org.elasticsearch.plugins.RepositoryPlugin;
|
||||
import org.elasticsearch.plugins.ScriptPlugin;
|
||||
|
@ -255,11 +255,10 @@ public class Node implements Closeable {
|
|||
NODE_NAME_SETTING.get(tmpSettings), NODE_NAME_SETTING.getKey());
|
||||
}
|
||||
|
||||
final String displayVersion = Version.CURRENT + (Build.CURRENT.isSnapshot() ? "-SNAPSHOT" : "");
|
||||
final JvmInfo jvmInfo = JvmInfo.jvmInfo();
|
||||
logger.info(
|
||||
"version[{}], pid[{}], build[{}/{}], OS[{}/{}/{}], JVM[{}/{}/{}/{}]",
|
||||
displayVersion,
|
||||
displayVersion(Version.CURRENT, Build.CURRENT.isSnapshot()),
|
||||
jvmInfo.pid(),
|
||||
Build.CURRENT.shortHash(),
|
||||
Build.CURRENT.date(),
|
||||
|
@ -270,7 +269,7 @@ public class Node implements Closeable {
|
|||
Constants.JVM_NAME,
|
||||
Constants.JAVA_VERSION,
|
||||
Constants.JVM_VERSION);
|
||||
|
||||
warnIfPreRelease(Version.CURRENT, Build.CURRENT.isSnapshot(), logger);
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("using config [{}], data [{}], logs [{}], plugins [{}]",
|
||||
|
@ -445,6 +444,19 @@ public class Node implements Closeable {
|
|||
}
|
||||
}
|
||||
|
||||
// visible for testing
|
||||
static void warnIfPreRelease(final Version version, final boolean isSnapshot, final Logger logger) {
|
||||
if (!version.isRelease() || isSnapshot) {
|
||||
logger.warn(
|
||||
"version [{}] is a pre-release version of Elasticsearch and is not suitable for production",
|
||||
displayVersion(version, isSnapshot));
|
||||
}
|
||||
}
|
||||
|
||||
private static String displayVersion(final Version version, final boolean isSnapshot) {
|
||||
return version + (isSnapshot ? "-SNAPSHOT" : "");
|
||||
}
|
||||
|
||||
protected TransportService newTransportService(Settings settings, Transport transport, ThreadPool threadPool,
|
||||
TransportInterceptor interceptor) {
|
||||
return new TransportService(settings, transport, threadPool, interceptor);
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
*/
|
||||
package org.elasticsearch.node;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.cluster.ClusterName;
|
||||
import org.elasticsearch.common.network.NetworkModule;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
|
@ -30,6 +32,10 @@ import java.nio.file.Path;
|
|||
import java.util.Collections;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
|
||||
public class NodeTests extends ESTestCase {
|
||||
|
||||
|
@ -55,4 +61,29 @@ public class NodeTests extends ESTestCase {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void testWarnIfPreRelease() {
|
||||
final Logger logger = mock(Logger.class);
|
||||
|
||||
final int id = randomIntBetween(1, 9) * 1000000;
|
||||
final Version releaseVersion = Version.fromId(id + 99);
|
||||
final Version preReleaseVersion = Version.fromId(id + randomIntBetween(0, 98));
|
||||
|
||||
Node.warnIfPreRelease(releaseVersion, false, logger);
|
||||
verifyNoMoreInteractions(logger);
|
||||
|
||||
reset(logger);
|
||||
Node.warnIfPreRelease(releaseVersion, true, logger);
|
||||
verify(logger).warn(
|
||||
"version [{}] is a pre-release version of Elasticsearch and is not suitable for production", releaseVersion + "-SNAPSHOT");
|
||||
|
||||
reset(logger);
|
||||
final boolean isSnapshot = randomBoolean();
|
||||
Node.warnIfPreRelease(preReleaseVersion, isSnapshot, logger);
|
||||
verify(logger).warn(
|
||||
"version [{}] is a pre-release version of Elasticsearch and is not suitable for production",
|
||||
preReleaseVersion + (isSnapshot ? "-SNAPSHOT" : ""));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue