Skip to content

Commit df65e46

Browse files
authored
Deprecate versions of Java prior to Java 11 (#40756)
This commit deprecates versions of Java prior to Java 11. This commit will cause a warning to be printed to standard error when any command line tool is invoked, or when Elasticsearch is started. Additionally, we log a deprecation message when Elasticsearch is started.
1 parent e64524c commit df65e46

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class JavaVersion {
2727

2828
public static final List<Integer> CURRENT = parse(System.getProperty("java.specification.version"));
2929
public static final List<Integer> JAVA_8 = parse("1.8");
30+
public static final List<Integer> JAVA_11 = parse("11");
3031

3132
static List<Integer> parse(final String value) {
3233
if (!value.matches("^0*[0-9]+(\\.[0-9]+)*$")) {
@@ -66,5 +67,4 @@ static int compare(final List<Integer> left, final List<Integer> right) {
6667
return 0;
6768
}
6869

69-
7070
}

distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ public static void main(final String[] args) {
4848
errPrintln(message);
4949
exit(1);
5050
}
51+
if (JavaVersion.compare(JavaVersion.CURRENT, JavaVersion.JAVA_11) < 0) {
52+
final String message = String.format(
53+
Locale.ROOT,
54+
"future versions of Elasticsearch will require Java 11; your Java version from [%s] does not meet this requirement",
55+
System.getProperty("java.home"));
56+
errPrintln(message);
57+
}
5158
exit(0);
5259
}
5360

qa/vagrant/src/test/resources/packaging/tests/60_systemd.bats

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ setup() {
106106

107107
# Verifies that no new entries in journald have been added
108108
# since the last start
109-
result="$(journalctl _SYSTEMD_UNIT=elasticsearch.service --since "$since" --output cat | wc -l)"
109+
result="$(journalctl _SYSTEMD_UNIT=elasticsearch.service --since "$since" --output cat | grep -v "future versions of Elasticsearch will require Java 11" | wc -l)"
110110
[ "$result" -eq "0" ] || {
111111
echo "Expected no entries in journalctl for the Elasticsearch service but found:"
112112
journalctl _SYSTEMD_UNIT=elasticsearch.service --since "$since"

server/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,29 @@
1919

2020
package org.elasticsearch.bootstrap;
2121

22-
import org.apache.logging.log4j.Logger;
2322
import org.apache.logging.log4j.LogManager;
23+
import org.apache.logging.log4j.Logger;
2424
import org.apache.logging.log4j.core.Appender;
2525
import org.apache.logging.log4j.core.LoggerContext;
2626
import org.apache.logging.log4j.core.appender.ConsoleAppender;
2727
import org.apache.logging.log4j.core.config.Configurator;
2828
import org.apache.lucene.util.Constants;
29-
import org.elasticsearch.core.internal.io.IOUtils;
3029
import org.apache.lucene.util.StringHelper;
3130
import org.elasticsearch.ElasticsearchException;
3231
import org.elasticsearch.Version;
3332
import org.elasticsearch.cli.UserException;
3433
import org.elasticsearch.common.PidFile;
3534
import org.elasticsearch.common.SuppressForbidden;
3635
import org.elasticsearch.common.inject.CreationException;
36+
import org.elasticsearch.common.logging.DeprecationLogger;
3737
import org.elasticsearch.common.logging.LogConfigurator;
3838
import org.elasticsearch.common.logging.Loggers;
3939
import org.elasticsearch.common.network.IfConfig;
4040
import org.elasticsearch.common.settings.KeyStoreWrapper;
4141
import org.elasticsearch.common.settings.SecureSettings;
4242
import org.elasticsearch.common.settings.Settings;
4343
import org.elasticsearch.common.transport.BoundTransportAddress;
44+
import org.elasticsearch.core.internal.io.IOUtils;
4445
import org.elasticsearch.env.Environment;
4546
import org.elasticsearch.monitor.jvm.JvmInfo;
4647
import org.elasticsearch.monitor.os.OsProbe;
@@ -58,6 +59,7 @@
5859
import java.security.NoSuchAlgorithmException;
5960
import java.util.Collections;
6061
import java.util.List;
62+
import java.util.Locale;
6163
import java.util.concurrent.CountDownLatch;
6264

6365
/**
@@ -295,6 +297,14 @@ static void init(
295297
} catch (IOException e) {
296298
throw new BootstrapException(e);
297299
}
300+
if (JavaVersion.current().compareTo(JavaVersion.parse("11")) < 0) {
301+
final String message = String.format(
302+
Locale.ROOT,
303+
"future versions of Elasticsearch will require Java 11; " +
304+
"your Java version from [%s] does not meet this requirement",
305+
System.getProperty("java.home"));
306+
new DeprecationLogger(LogManager.getLogger(Bootstrap.class)).deprecated(message);
307+
}
298308
if (environment.pidFile() != null) {
299309
try {
300310
PidFile.create(environment.pidFile(), true);

0 commit comments

Comments
 (0)