mirror of https://github.com/apache/cassandra
Add JDK17 startup scripts
patch by Ekaterina Dimitrova; reviewed by Mick Semb Wever for CASSANDRA-18258
This commit is contained in:
parent
98a055e51c
commit
d1e3c781b5
|
|
@ -1,6 +1,6 @@
|
||||||
4.2
|
4.2
|
||||||
* More accurate skipping of sstables in read path (CASSANDRA-18134)
|
* More accurate skipping of sstables in read path (CASSANDRA-18134)
|
||||||
* Prepare for JDK17 experimental support (CASSANDRA-18179)
|
* Prepare for JDK17 experimental support (CASSANDRA-18179, CASSANDRA-18258)
|
||||||
* Remove Scripted UDFs internals; hooks to be added later in CASSANDRA-17281 (CASSANDRA-18252)
|
* Remove Scripted UDFs internals; hooks to be added later in CASSANDRA-17281 (CASSANDRA-18252)
|
||||||
* Update JNA to 5.13.0 (CASSANDRA-18050)
|
* Update JNA to 5.13.0 (CASSANDRA-18050)
|
||||||
* Make virtual tables decide if they implicitly enable ALLOW FILTERING (CASSANDRA-18238)
|
* Make virtual tables decide if they implicitly enable ALLOW FILTERING (CASSANDRA-18238)
|
||||||
|
|
|
||||||
|
|
@ -114,8 +114,9 @@ fi
|
||||||
java_ver_output=`"${JAVA:-java}" -version 2>&1`
|
java_ver_output=`"${JAVA:-java}" -version 2>&1`
|
||||||
jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
|
jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
|
||||||
JVM_VERSION=${jvmver%_*}
|
JVM_VERSION=${jvmver%_*}
|
||||||
|
short=$(echo "${jvmver}" | cut -c1-2)
|
||||||
|
|
||||||
JAVA_VERSION=11
|
JAVA_VERSION=17
|
||||||
if [ "$JVM_VERSION" = "1.8.0" ] ; then
|
if [ "$JVM_VERSION" = "1.8.0" ] ; then
|
||||||
JVM_PATCH_VERSION=${jvmver#*_}
|
JVM_PATCH_VERSION=${jvmver#*_}
|
||||||
if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_VERSION" \> "1.8.2" ] ; then
|
if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_VERSION" \> "1.8.2" ] ; then
|
||||||
|
|
@ -130,6 +131,11 @@ if [ "$JVM_VERSION" = "1.8.0" ] ; then
|
||||||
elif [ "$JVM_VERSION" \< "11" ] ; then
|
elif [ "$JVM_VERSION" \< "11" ] ; then
|
||||||
echo "Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer)."
|
echo "Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer)."
|
||||||
exit 1;
|
exit 1;
|
||||||
|
elif [ "$short" = "11" ] ; then
|
||||||
|
JAVA_VERSION=11
|
||||||
|
elif [ "$JVM_VERSION" \< "17" ] ; then
|
||||||
|
echo "Cassandra 5.0 requires Java 11 or Java 17."
|
||||||
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
jvm=`echo "$java_ver_output" | grep -A 1 '[openjdk|java] version' | awk 'NR==2 {print $1}'`
|
jvm=`echo "$java_ver_output" | grep -A 1 '[openjdk|java] version' | awk 'NR==2 {print $1}'`
|
||||||
|
|
@ -153,7 +159,9 @@ esac
|
||||||
|
|
||||||
# Read user-defined JVM options from jvm-server.options file
|
# Read user-defined JVM options from jvm-server.options file
|
||||||
JVM_OPTS_FILE=$CASSANDRA_CONF/jvm${jvmoptions_variant:--clients}.options
|
JVM_OPTS_FILE=$CASSANDRA_CONF/jvm${jvmoptions_variant:--clients}.options
|
||||||
if [ $JAVA_VERSION -ge 11 ] ; then
|
if [ $JAVA_VERSION -ge 17 ] ; then
|
||||||
|
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm17${jvmoptions_variant:--clients}.options
|
||||||
|
elif [ $JAVA_VERSION -ge 11 ] ; then
|
||||||
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm11${jvmoptions_variant:--clients}.options
|
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm11${jvmoptions_variant:--clients}.options
|
||||||
else
|
else
|
||||||
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm8${jvmoptions_variant:--clients}.options
|
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm8${jvmoptions_variant:--clients}.options
|
||||||
|
|
|
||||||
76
build.xml
76
build.xml
|
|
@ -216,9 +216,51 @@
|
||||||
</resources>
|
</resources>
|
||||||
<pathconvert property="_jvm_args_concat" refid="_jvm11_arg_items" pathsep=" "/>
|
<pathconvert property="_jvm_args_concat" refid="_jvm11_arg_items" pathsep=" "/>
|
||||||
<condition property="java11-jvmargs" value="${_jvm_args_concat}" else="">
|
<condition property="java11-jvmargs" value="${_jvm_args_concat}" else="">
|
||||||
<not>
|
<equals arg1="${ant.java.version}" arg2="11"/>
|
||||||
<equals arg1="${ant.java.version}" arg2="1.8"/>
|
</condition>
|
||||||
</not>
|
|
||||||
|
<resources id="_jvm17_arg_items">
|
||||||
|
<string>-Djdk.attach.allowAttachSelf=true</string>
|
||||||
|
<string>-XX:+UseG1GC</string>
|
||||||
|
<string>-XX:+ParallelRefProcEnabled</string>
|
||||||
|
<string>-XX:MaxTenuringThreshold=1</string>
|
||||||
|
<string>-XX:G1HeapRegionSize=16m</string>
|
||||||
|
|
||||||
|
<string>--add-exports java.base/jdk.internal.misc=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.base/jdk.internal.ref=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.base/sun.nio.ch=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.sql/java.sql=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports java.base/java.lang.ref=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED</string>
|
||||||
|
<string>--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</string>
|
||||||
|
|
||||||
|
<string>--add-opens java.base/java.lang.module=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.net=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/jdk.internal.loader=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/jdk.internal.ref=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/jdk.internal.math=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/jdk.internal.module=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED</string>
|
||||||
|
|
||||||
|
<string>--add-opens java.base/sun.nio.ch=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.io=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.nio=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.util.concurrent=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.util=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.lang=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.math=ALL-UNNAMED</string>
|
||||||
|
<string>--add-opens java.base/java.lang.reflect=ALL-UNNAMED</string>
|
||||||
|
</resources>
|
||||||
|
<pathconvert property="_jvm_args_concat2" refid="_jvm17_arg_items" pathsep=" "/>
|
||||||
|
<condition property="java17-jvmargs" value="${_jvm_args_concat2}" else="">
|
||||||
|
<equals arg1="${ant.java.version}" arg2="17"/>
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
@ -233,6 +275,7 @@
|
||||||
In java 11 we also need to set a system property to enable netty to use Unsafe direct byte
|
In java 11 we also need to set a system property to enable netty to use Unsafe direct byte
|
||||||
buffer construction (see CASSANDRA-16493)
|
buffer construction (see CASSANDRA-16493)
|
||||||
-->
|
-->
|
||||||
|
<!-- Leaving _jvm8_test_arg_items for now as we are not dropping Java 8 yet but it will be useless after CASSANDRA-18258-->
|
||||||
<resources id="_jvm8_test_arg_items">
|
<resources id="_jvm8_test_arg_items">
|
||||||
<!-- TODO see CASSANDRA-16212 - we seem to OOM non stop now after CASSANDRA-16212, so to have clean CI while this gets looked into, disabling limiting metaspace
|
<!-- TODO see CASSANDRA-16212 - we seem to OOM non stop now after CASSANDRA-16212, so to have clean CI while this gets looked into, disabling limiting metaspace
|
||||||
<string>-XX:MaxMetaspaceExpansion=64M</string>
|
<string>-XX:MaxMetaspaceExpansion=64M</string>
|
||||||
|
|
@ -246,19 +289,24 @@
|
||||||
<string>-Dio.netty.tryReflectionSetAccessible=true</string>
|
<string>-Dio.netty.tryReflectionSetAccessible=true</string>
|
||||||
</resources>
|
</resources>
|
||||||
<pathconvert property="_jvm11_test_arg_items_concat" refid="_jvm11_test_arg_items" pathsep=" "/>
|
<pathconvert property="_jvm11_test_arg_items_concat" refid="_jvm11_test_arg_items" pathsep=" "/>
|
||||||
<condition property="_std-test-jvmargs" value="${_jvm11_test_arg_items_concat}" else="${_jvm8_test_arg_items_concat}">
|
<resources id="_jvm17_test_arg_items">
|
||||||
<not>
|
<string>-Dio.netty.tryReflectionSetAccessible=true</string>
|
||||||
<equals arg1="${ant.java.version}" arg2="1.8"/>
|
</resources>
|
||||||
</not>
|
<pathconvert property="_jvm17_test_arg_items_concat" refid="_jvm17_test_arg_items" pathsep=" "/>
|
||||||
|
<condition property="_std-test-jvmargs11" value="${_jvm11_test_arg_items_concat}" else=" ">
|
||||||
|
<equals arg1="${ant.java.version}" arg2="11"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="_std-test-jvmargs17" value="${_jvm17_test_arg_items_concat}" else=" ">
|
||||||
|
<equals arg1="${ant.java.version}" arg2="17"/>
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<!-- needed to compile org.apache.cassandra.utils.JMXServerUtils -->
|
<!-- needed to compile org.apache.cassandra.utils.JMXServerUtils -->
|
||||||
<condition property="jdk11-javac-exports" value="--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED" else="">
|
<condition property="jdk11plus-javac-exports" value="--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED" else="">
|
||||||
<not>
|
<not>
|
||||||
<equals arg1="${ant.java.version}" arg2="1.8"/>
|
<equals arg1="${ant.java.version}" arg2="1.8"/>
|
||||||
</not>
|
</not>
|
||||||
</condition>
|
</condition>
|
||||||
<condition property="jdk11-javadoc-exports" value="${jdk11-javac-exports} --frames" else="">
|
<condition property="jdk11plus-javadoc-exports" value="${jdk11plus-javac-exports} --frames" else="">
|
||||||
<not>
|
<not>
|
||||||
<equals arg1="${ant.java.version}" arg2="1.8"/>
|
<equals arg1="${ant.java.version}" arg2="1.8"/>
|
||||||
</not>
|
</not>
|
||||||
|
|
@ -292,7 +340,7 @@
|
||||||
windowtitle="${ant.project.name} API" classpathref="cassandra.classpath"
|
windowtitle="${ant.project.name} API" classpathref="cassandra.classpath"
|
||||||
bottom="Copyright &copy; 2009- The Apache Software Foundation"
|
bottom="Copyright &copy; 2009- The Apache Software Foundation"
|
||||||
useexternalfile="yes" encoding="UTF-8" failonerror="false"
|
useexternalfile="yes" encoding="UTF-8" failonerror="false"
|
||||||
maxmemory="256m" additionalparam="${jdk11-javadoc-exports}">
|
maxmemory="256m" additionalparam="${jdk11plus-javadoc-exports}">
|
||||||
<filesets/>
|
<filesets/>
|
||||||
</javadoc>
|
</javadoc>
|
||||||
<fail message="javadoc failed">
|
<fail message="javadoc failed">
|
||||||
|
|
@ -431,6 +479,7 @@
|
||||||
<jvmarg value="-javaagent:${build.lib}/jamm-${jamm.version}.jar" />
|
<jvmarg value="-javaagent:${build.lib}/jamm-${jamm.version}.jar" />
|
||||||
<jvmarg value="-ea"/>
|
<jvmarg value="-ea"/>
|
||||||
<jvmarg line="${java11-jvmargs}"/>
|
<jvmarg line="${java11-jvmargs}"/>
|
||||||
|
<jvmarg line="${java17-jvmargs}"/>
|
||||||
</java>
|
</java>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
@ -451,7 +500,7 @@
|
||||||
<src path="${build.src.java}"/>
|
<src path="${build.src.java}"/>
|
||||||
<src path="${build.src.gen-java}"/>
|
<src path="${build.src.gen-java}"/>
|
||||||
<compilerarg value="-XDignore.symbol.file"/>
|
<compilerarg value="-XDignore.symbol.file"/>
|
||||||
<compilerarg line="${jdk11-javac-exports}"/>
|
<compilerarg line="${jdk11plus-javac-exports}"/>
|
||||||
<classpath>
|
<classpath>
|
||||||
<path refid="cassandra.classpath"/>
|
<path refid="cassandra.classpath"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
@ -1088,9 +1137,11 @@
|
||||||
<jvmarg value="-Dcassandra.test.messagingService.nonGracefulShutdown=${cassandra.test.messagingService.nonGracefulShutdown}"/>
|
<jvmarg value="-Dcassandra.test.messagingService.nonGracefulShutdown=${cassandra.test.messagingService.nonGracefulShutdown}"/>
|
||||||
<jvmarg value="-Dcassandra.use_nix_recursive_delete=${cassandra.use_nix_recursive_delete}"/>
|
<jvmarg value="-Dcassandra.use_nix_recursive_delete=${cassandra.use_nix_recursive_delete}"/>
|
||||||
<jvmarg line="${java11-jvmargs}"/>
|
<jvmarg line="${java11-jvmargs}"/>
|
||||||
|
<jvmarg line="${java17-jvmargs}"/>
|
||||||
<!-- disable shrinks in quicktheories CASSANDRA-15554 -->
|
<!-- disable shrinks in quicktheories CASSANDRA-15554 -->
|
||||||
<jvmarg value="-DQT_SHRINKS=0"/>
|
<jvmarg value="-DQT_SHRINKS=0"/>
|
||||||
<jvmarg line="${_std-test-jvmargs}" />
|
<jvmarg line="${_std-test-jvmargs11}" />
|
||||||
|
<jvmarg line="${_std-test-jvmargs17}" />
|
||||||
<jvmarg line="${test.jvm.args}" />
|
<jvmarg line="${test.jvm.args}" />
|
||||||
<optjvmargs/>
|
<optjvmargs/>
|
||||||
<!-- Uncomment to debug unittest, attach debugger to port 1416 -->
|
<!-- Uncomment to debug unittest, attach debugger to port 1416 -->
|
||||||
|
|
@ -1752,6 +1803,7 @@
|
||||||
<option name="ADDITIONAL_OPTIONS_STRING" value="--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED" />
|
<option name="ADDITIONAL_OPTIONS_STRING" value="--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED" />
|
||||||
</component>
|
</component>
|
||||||
</project>]]></echo>
|
</project>]]></echo>
|
||||||
|
<echo>"IDE configuration updated for use with JDK11"</echo>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- Generate IDEA project description files -->
|
<!-- Generate IDEA project description files -->
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ if [ "x$CASSANDRA_LOG_DIR" = "x" ] ; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#GC log path has to be defined here because it needs to access CASSANDRA_HOME
|
#GC log path has to be defined here because it needs to access CASSANDRA_HOME
|
||||||
if [ $JAVA_VERSION -ge 11 ] ; then
|
if [ $JAVA_VERSION -ge 11 ] || [ $JAVA_VERSION -ge 17 ] ; then
|
||||||
# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for details about the syntax
|
# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for details about the syntax
|
||||||
# The following is the equivalent to -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
|
# The following is the equivalent to -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
|
||||||
echo "$JVM_OPTS" | grep -qe "-[X]log:gc"
|
echo "$JVM_OPTS" | grep -qe "-[X]log:gc"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# jvm17-clients.options #
|
||||||
|
# #
|
||||||
|
# See jvm-clients.options. This file is specific for Java 17 and newer. #
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
###################
|
||||||
|
# JPMS SETTINGS #
|
||||||
|
###################
|
||||||
|
|
||||||
|
-Djdk.attach.allowAttachSelf=true
|
||||||
|
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
|
||||||
|
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
|
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
|
||||||
|
--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
|
||||||
|
--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED
|
||||||
|
--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
|
||||||
|
--add-exports java.sql/java.sql=ALL-UNNAMED
|
||||||
|
--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
|
||||||
|
|
||||||
|
|
||||||
|
--add-opens java.base/java.lang.module=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.math=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED
|
||||||
|
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
|
||||||
|
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
|
||||||
|
# to be addressed in CASSANDRA-17850
|
||||||
|
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.io=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.nio=ALL-UNNAMED
|
||||||
|
# to be addressed during jamm maintenance
|
||||||
|
--add-opens java.base/java.util.concurrent=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.util=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED
|
||||||
|
# jamm and the in-jvm tests...
|
||||||
|
--add-opens java.base/java.lang=ALL-UNNAMED
|
||||||
|
# jamm
|
||||||
|
--add-opens java.base/java.math=ALL-UNNAMED
|
||||||
|
--add-opens jdk.compiler/com.sun.tools.javac=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.lang=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
|
||||||
|
|
||||||
|
# The newline in the end of file is intentional
|
||||||
|
|
@ -0,0 +1,131 @@
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
# jvm17-server.options #
|
||||||
|
# #
|
||||||
|
# See jvm-server.options. This file is specific for Java 17 and newer. #
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
#################
|
||||||
|
# GC SETTINGS #
|
||||||
|
#################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### G1 Settings
|
||||||
|
## Use the Hotspot garbage-first collector.
|
||||||
|
-XX:+UseG1GC
|
||||||
|
-XX:+ParallelRefProcEnabled
|
||||||
|
-XX:MaxTenuringThreshold=1
|
||||||
|
-XX:G1HeapRegionSize=16m
|
||||||
|
|
||||||
|
#
|
||||||
|
## Have the JVM do less remembered set work during STW, instead
|
||||||
|
## preferring concurrent GC. Reduces p99.9 latency.
|
||||||
|
-XX:G1RSetUpdatingPauseTimePercent=5
|
||||||
|
#
|
||||||
|
## Main G1GC tunable: lowering the pause target will lower throughput and vise versa.
|
||||||
|
## 200ms is the JVM default and lowest viable setting
|
||||||
|
## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml.
|
||||||
|
-XX:MaxGCPauseMillis=300
|
||||||
|
|
||||||
|
## Optional G1 Settings
|
||||||
|
# Save CPU time on large (>= 16GB) heaps by delaying region scanning
|
||||||
|
# until the heap is 70% full. The default in Hotspot 8u40 is 40%.
|
||||||
|
-XX:InitiatingHeapOccupancyPercent=70
|
||||||
|
|
||||||
|
# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores.
|
||||||
|
# Otherwise equal to the number of cores when 8 or less.
|
||||||
|
# Machines with > 10 cores should try setting these to <= full cores.
|
||||||
|
#-XX:ParallelGCThreads=16
|
||||||
|
# By default, ConcGCThreads is 1/4 of ParallelGCThreads.
|
||||||
|
# Setting both to the same value can reduce STW durations.
|
||||||
|
#-XX:ConcGCThreads=16
|
||||||
|
|
||||||
|
|
||||||
|
### JPMS
|
||||||
|
|
||||||
|
-Djdk.attach.allowAttachSelf=true
|
||||||
|
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
|
||||||
|
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
|
# https://chronicle.software/chronicle-support-java-17/
|
||||||
|
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
|
||||||
|
--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
|
||||||
|
--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED
|
||||||
|
--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
|
||||||
|
--add-exports java.sql/java.sql=ALL-UNNAMED
|
||||||
|
|
||||||
|
#chronicle, AuditLog https://chronicle.software/chronicle-support-java-17/
|
||||||
|
--add-exports java.base/java.lang.ref=ALL-UNNAMED
|
||||||
|
--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
|
||||||
|
|
||||||
|
--add-opens java.base/java.lang.module=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.ref=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.math=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
|
||||||
|
--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED
|
||||||
|
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
|
||||||
|
|
||||||
|
#to be addressed in CASSANDRA-17850
|
||||||
|
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
|
||||||
|
# https://chronicle.software/chronicle-support-java-17/
|
||||||
|
--add-opens java.base/java.io=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.nio=ALL-UNNAMED
|
||||||
|
#to be addressed during jamm maintenance
|
||||||
|
--add-opens java.base/java.util.concurrent=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.util=ALL-UNNAMED
|
||||||
|
--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED
|
||||||
|
# https://chronicle.software/chronicle-support-java-17/ explains also --add-opens java.base/java.util=ALL-UNNAMED, further to jamm
|
||||||
|
# many cqlsh tests fail if we do not open the below one - jamm and at org.apache.cassandra.net.Verb.getModifiersField(Verb.java:388)
|
||||||
|
# in-jvm tests
|
||||||
|
--add-opens java.base/java.lang=ALL-UNNAMED
|
||||||
|
#jamm
|
||||||
|
--add-opens java.base/java.math=ALL-UNNAMED
|
||||||
|
#in-jvm tests? plus # https://chronicle.software/chronicle-support-java-17/
|
||||||
|
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
|
||||||
|
|
||||||
|
### GC logging options -- uncomment to enable
|
||||||
|
|
||||||
|
# Java 11 (and newer) GC logging options:
|
||||||
|
# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for details about the syntax
|
||||||
|
# The following is the equivalent to -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
|
||||||
|
#-Xlog:gc=info,heap*=trace,age*=debug,safepoint=info,promotion*=trace:file=/var/log/cassandra/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760
|
||||||
|
|
||||||
|
# Notes for Java 8 migration:
|
||||||
|
#
|
||||||
|
# -XX:+PrintGCDetails maps to -Xlog:gc*:... - i.e. add a '*' after "gc"
|
||||||
|
# -XX:+PrintGCDateStamps maps to decorator 'time'
|
||||||
|
#
|
||||||
|
# -XX:+PrintHeapAtGC maps to 'heap' with level 'trace'
|
||||||
|
# -XX:+PrintTenuringDistribution maps to 'age' with level 'debug'
|
||||||
|
# -XX:+PrintGCApplicationStoppedTime maps to 'safepoint' with level 'info'
|
||||||
|
# -XX:+PrintPromotionFailure maps to 'promotion' with level 'trace'
|
||||||
|
# -XX:PrintFLSStatistics=1 maps to 'freelist' with level 'trace'
|
||||||
|
|
||||||
|
### Netty Options
|
||||||
|
|
||||||
|
# On Java >= 9 Netty requires the io.netty.tryReflectionSetAccessible system property to be set to true to enable
|
||||||
|
# creation of direct buffers using Unsafe. Without it, this falls back to ByteBuffer.allocateDirect which has
|
||||||
|
# inferior performance and risks exceeding MaxDirectMemory
|
||||||
|
-Dio.netty.tryReflectionSetAccessible=true
|
||||||
|
|
||||||
|
# The newline in the end of file is intentional
|
||||||
|
|
@ -80,8 +80,9 @@ fi
|
||||||
java_ver_output=`"${JAVA:-java}" -version 2>&1`
|
java_ver_output=`"${JAVA:-java}" -version 2>&1`
|
||||||
jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
|
jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
|
||||||
JVM_VERSION=${jvmver%_*}
|
JVM_VERSION=${jvmver%_*}
|
||||||
|
short=$(echo "${jvmver}" | cut -c1-2)
|
||||||
|
|
||||||
JAVA_VERSION=11
|
JAVA_VERSION=17
|
||||||
if [ "$JVM_VERSION" = "1.8.0" ] ; then
|
if [ "$JVM_VERSION" = "1.8.0" ] ; then
|
||||||
JVM_PATCH_VERSION=${jvmver#*_}
|
JVM_PATCH_VERSION=${jvmver#*_}
|
||||||
if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_VERSION" \> "1.8.2" ] ; then
|
if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_VERSION" \> "1.8.2" ] ; then
|
||||||
|
|
@ -96,6 +97,10 @@ if [ "$JVM_VERSION" = "1.8.0" ] ; then
|
||||||
elif [ "$JVM_VERSION" \< "11" ] ; then
|
elif [ "$JVM_VERSION" \< "11" ] ; then
|
||||||
echo "Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer)."
|
echo "Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer)."
|
||||||
exit 1;
|
exit 1;
|
||||||
|
elif [ "$short" = "11" ] ; then
|
||||||
|
JAVA_VERSION=11
|
||||||
|
elif [ "$JVM_VERSION" \< "17" ] ; then
|
||||||
|
echo "Cassandra 5.0 requires Java 11 or Java 17(or newer)."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
jvm=`echo "$java_ver_output" | grep -A 1 '[openjdk|java] version' | awk 'NR==2 {print $1}'`
|
jvm=`echo "$java_ver_output" | grep -A 1 '[openjdk|java] version' | awk 'NR==2 {print $1}'`
|
||||||
|
|
@ -119,7 +124,9 @@ esac
|
||||||
|
|
||||||
# Read user-defined JVM options from jvm-server.options file
|
# Read user-defined JVM options from jvm-server.options file
|
||||||
JVM_OPTS_FILE=$CASSANDRA_CONF/jvm${jvmoptions_variant:--clients}.options
|
JVM_OPTS_FILE=$CASSANDRA_CONF/jvm${jvmoptions_variant:--clients}.options
|
||||||
if [ $JAVA_VERSION -ge 11 ] ; then
|
if [ $JAVA_VERSION -ge 17 ] ; then
|
||||||
|
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm17${jvmoptions_variant:--clients}.options
|
||||||
|
elif [ $JAVA_VERSION -ge 11 ] ; then
|
||||||
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm11${jvmoptions_variant:--clients}.options
|
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm11${jvmoptions_variant:--clients}.options
|
||||||
else
|
else
|
||||||
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm8${jvmoptions_variant:--clients}.options
|
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm8${jvmoptions_variant:--clients}.options
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue