mirror of https://github.com/apache/druid.git
Add Java 17 information to documentation. (#12990)
The docs say Java 17 support is experimental, and give tips on running successfully with Java 17. This patch also removes java.base/jdk.internal.perf and jdk.management/com.sun.management.internal from the list of required exports and opens, because they were formerly needed for JvmMonitor, which was rewritten in #12481 to use MXBeans instead.
This commit is contained in:
parent
2450b96ac8
commit
48ceab2153
|
@ -27,8 +27,8 @@ a Java runtime for Druid.
|
||||||
|
|
||||||
## Selecting a Java runtime
|
## Selecting a Java runtime
|
||||||
|
|
||||||
Druid fully supports Java 8 and 11. The project team recommends Java 11. The project team does not recommend running
|
Druid fully supports Java 8 and 11, and has experimental support for [Java 17](#java-17).
|
||||||
with Java 17, because certain Druid functionality is not currently compatible with Java 17.
|
The project team recommends Java 11.
|
||||||
|
|
||||||
The project team recommends using an OpenJDK-based Java distribution. There are many free and actively-supported
|
The project team recommends using an OpenJDK-based Java distribution. There are many free and actively-supported
|
||||||
distributions available, including
|
distributions available, including
|
||||||
|
@ -70,7 +70,6 @@ Druid, because Java 8 does not recognize these parameters and fails to start up
|
||||||
To do this, add the following lines to your `jvm.config` files:
|
To do this, add the following lines to your `jvm.config` files:
|
||||||
|
|
||||||
```
|
```
|
||||||
--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED
|
|
||||||
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
|
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
|
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
|
||||||
--add-opens=java.base/java.lang=ALL-UNNAMED
|
--add-opens=java.base/java.lang=ALL-UNNAMED
|
||||||
|
@ -78,7 +77,6 @@ To do this, add the following lines to your `jvm.config` files:
|
||||||
--add-opens=java.base/java.nio=ALL-UNNAMED
|
--add-opens=java.base/java.nio=ALL-UNNAMED
|
||||||
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED
|
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
|
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
|
||||||
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Additionally, tasks run by [MiddleManagers](../design/architecture.md) execute in separate JVMs. The command line for
|
Additionally, tasks run by [MiddleManagers](../design/architecture.md) execute in separate JVMs. The command line for
|
||||||
|
@ -87,8 +85,29 @@ these JVMs is given by `druid.indexer.runner.javaOptsArray` or `druid.indexer.ru
|
||||||
a line like the following:
|
a line like the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
druid.indexer.runner.javaOptsArray=["-server","-Xms1g","-Xmx1g","-XX:MaxDirectMemorySize=1g","-Duser.timezone=UTC","-Dfile.encoding=UTF-8","-XX:+ExitOnOutOfMemoryError","-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager","--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED","--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED","--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED","--add-opens=java.base/java.lang=ALL-UNNAMED","--add-opens=java.base/java.io=ALL-UNNAMED","--add-opens=java.base/java.nio=ALL-UNNAMED","--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED","--add-opens=java.base/sun.nio.ch=ALL-UNNAMED","--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED"]
|
druid.indexer.runner.javaOptsArray=["-server","-Xms1g","-Xmx1g","-XX:MaxDirectMemorySize=1g","-Duser.timezone=UTC","-Dfile.encoding=UTF-8","-XX:+ExitOnOutOfMemoryError","-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager","--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED","--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED","--add-opens=java.base/java.lang=ALL-UNNAMED","--add-opens=java.base/java.io=ALL-UNNAMED","--add-opens=java.base/java.nio=ALL-UNNAMED","--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED","--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"]
|
||||||
```
|
```
|
||||||
|
|
||||||
The `Xms`, `Xmx`, and `MaxDirectMemorySize` parameters in the line above are merely an example. You may use different
|
The `Xms`, `Xmx`, and `MaxDirectMemorySize` parameters in the line above are merely an example. You may use different
|
||||||
values in your specific environment.
|
values in your specific environment.
|
||||||
|
|
||||||
|
## Java 17
|
||||||
|
|
||||||
|
Druid has experimental support for Java 17.
|
||||||
|
|
||||||
|
An important change in Java 17 is that [strong encapsulation](#strong-encapsulation) is enabled by default. The various
|
||||||
|
`--add-opens` and `--add-exports` parameters listed in the [strong encapsulation](#strong-encapsulation) section are
|
||||||
|
required in all `jvm.config` files and in `druid.indexer.runner.javaOpts` or `druid.indexer.runner.javaOptsArray` on
|
||||||
|
MiddleManagers. Failure to include these parameters leads to failure of various operations.
|
||||||
|
|
||||||
|
In addition, Druid's launch scripts detect Java 17 and log the following message rather than starting up:
|
||||||
|
|
||||||
|
```
|
||||||
|
Druid requires Java 8 or 11. Your current version is: 17.X.Y.
|
||||||
|
```
|
||||||
|
|
||||||
|
You can skip this check with an environment variable:
|
||||||
|
|
||||||
|
```
|
||||||
|
export DRUID_SKIP_JAVA_CHECK=1
|
||||||
|
```
|
||||||
|
|
|
@ -31,14 +31,12 @@ then
|
||||||
# Must disable strong encapsulation for certain packages on Java 17.
|
# Must disable strong encapsulation for certain packages on Java 17.
|
||||||
exec "$JAVA_BIN" \
|
exec "$JAVA_BIN" \
|
||||||
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
|
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
|
||||||
--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED \
|
|
||||||
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
|
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
|
||||||
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED \
|
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED \
|
||||||
--add-opens=java.base/java.nio=ALL-UNNAMED \
|
--add-opens=java.base/java.nio=ALL-UNNAMED \
|
||||||
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
|
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
|
||||||
--add-opens=java.base/java.io=ALL-UNNAMED \
|
--add-opens=java.base/java.io=ALL-UNNAMED \
|
||||||
--add-opens=java.base/java.lang=ALL-UNNAMED \
|
--add-opens=java.base/java.lang=ALL-UNNAMED \
|
||||||
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED \
|
|
||||||
"$@"
|
"$@"
|
||||||
elif [ "$JAVA_MAJOR" != "" ] && [ "$JAVA_MAJOR" -ge "11" ]
|
elif [ "$JAVA_MAJOR" != "" ] && [ "$JAVA_MAJOR" -ge "11" ]
|
||||||
then
|
then
|
||||||
|
|
4
pom.xml
4
pom.xml
|
@ -1685,10 +1685,6 @@
|
||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<jdk.surefire.argLine>
|
<jdk.surefire.argLine>
|
||||||
<!-- required for JvmMonitor on Java 11+ -->
|
|
||||||
--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED
|
|
||||||
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
|
|
||||||
|
|
||||||
<!-- required for DataSketches Memory on Java 11+ -->
|
<!-- required for DataSketches Memory on Java 11+ -->
|
||||||
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
|
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
|
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
|
||||||
|
|
Loading…
Reference in New Issue