Merge branch 'cassandra-5.0' into trunk

This commit is contained in:
Brandon Williams 2024-02-08 06:14:07 -06:00
commit 5ca972b145
3 changed files with 68 additions and 64 deletions

View File

@ -13,6 +13,7 @@
* Add the ability to disable bulk loading of SSTables (CASSANDRA-18781)
* Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787)
Merged from 5.0:
* Update packaging shell includes (CASSANDRA-19283)
* Fix data corruption in VectorCodec when using heap buffers (CASSANDRA-19167)
* Avoid over-skipping of key iterators from static column indexes during mixed intersections (CASSANDRA-19278)
* Make concurrent_index_builders configurable at runtime (CASSANDRA-19266)

View File

@ -25,7 +25,7 @@
# This can be the path to a jar file, or a directory containing the
# compiled classes. NOTE: This isn't needed by the startup script,
@@ -38,7 +38,7 @@ fi
@@ -45,7 +45,7 @@ fi
# the default location for commitlogs, sstables, and saved caches
# if not set in cassandra.yaml
@ -33,9 +33,9 @@
+cassandra_storagedir=/var/lib/cassandra
# JAVA_HOME can optionally be set here
#JAVA_HOME=/usr/local/jdk11
@@ -47,6 +47,10 @@ for jar in "$CASSANDRA_HOME"/lib/*.jar; do
CLASSPATH="$CLASSPATH:$jar"
#JAVA_HOME=/usr/local/jdk6
@@ -59,6 +59,10 @@ for jsr223jar in "$CASSANDRA_HOME"/lib/jsr223/*/*.jar; do
CLASSPATH="$CLASSPATH:$jsr223jar"
done
+for jar in "$CASSANDRA_HOME"/*.jar; do
@ -44,56 +44,4 @@
+
CLASSPATH="$CLASSPATH:$EXTRA_CLASSPATH"
# JSR223 - collect all JSR223 engines' jars
#
# Java executable and per-Java version JVM settings
#
# Use JAVA_HOME if set, otherwise look for java in PATH
if [ -n "$JAVA_HOME" ]; then
# Why we can't have nice things: Solaris combines x86 and x86_64
# installations in the same tree, using an unconventional path for the
# 64bit JVM. Since we prefer 64bit, search the alternate path first,
# (see https://issues.apache.org/jira/browse/CASSANDRA-4638).
for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do
if [ -x "$java" ]; then
JAVA="$java"
break
fi
done
else
JAVA=`command -v java 2> /dev/null`
fi
if [ -z $JAVA ] ; then
echo Unable to find java executable. Check JAVA_HOME and PATH environment variables. >&2
exit 1;
fi
# Matches variable 'java.supported' in build.xml
+java_versions_supported=11,17
# Determine the sort of JVM we'll be running on.
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`
JVM_VERSION=${jvmver%_*}
short=$(echo "${jvmver}" | cut -c1-2)
# Unsupported JDKs below the upper supported version are not allowed
+if [ "$short" != "$(echo "$java_versions_supported" | cut -d, -f1)" ] && [ "$JVM_VERSION" \< "$(echo "$java_versions_supported" | cut -d, -f2)" ] ; then
+ echo "Unsupported Java $JVM_VERSION. Supported are $java_versions_supported"
exit 1;
fi
# Allow execution of supported Java versions, and newer if CASSANDRA_JDK_UNSUPPORTED is set
+is_supported_version=$(echo "$java_versions_supported" | tr "," '\n' | grep -F -x "$short")
+if [ -z "$is_supported_version" ] ; then
+ if [ -z "$CASSANDRA_JDK_UNSUPPORTED" ] ; then
+ echo "Unsupported Java $JVM_VERSION. Supported are $java_versions_supported"
+ echo "If you would like to test with newer Java versions set CASSANDRA_JDK_UNSUPPORTED to any value (for example, CASSANDRA_JDK_UNSUPPORTED=true). Unset the parameter for default behavior"
+ exit 1;
+ else
+ echo "######################################################################"
+ echo "Warning! You are using JDK$short. This Cassandra version only supports $java_versions_supported."
+ echo "######################################################################"
+ fi
+fi
+JAVA_VERSION=$short
# JSR223/JRuby - set ruby lib directory

View File

@ -1,4 +1,3 @@
#
# 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
@ -14,7 +13,7 @@
# 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.
#
# The directory where Cassandra's configs live (required)
CASSANDRA_CONF=/etc/cassandra/conf
@ -25,23 +24,71 @@ CASSANDRA_HOME=/usr/share/cassandra
if [ -n "$CLASSPATH" ]; then
CLASSPATH=$CLASSPATH:$CASSANDRA_CONF
else
CLASSPATH=$CASSANDRA_CONF
CLASSPATH="$CASSANDRA_CONF"
fi
for jar in /usr/share/cassandra/lib/*.jar; do
CLASSPATH=$CLASSPATH:$jar
# This can be the path to a jar file, or a directory containing the
# compiled classes. NOTE: This isn't needed by the startup script,
# it's just used here in constructing the classpath.
if [ -d $CASSANDRA_HOME/build ] ; then
jars_cnt="`ls -1 $CASSANDRA_HOME/build/apache-cassandra*.jar | grep -v 'javadoc.jar' | grep -v 'sources.jar' | wc -l | xargs echo`"
if [ "$jars_cnt" -gt 1 ]; then
dir="`cd $CASSANDRA_HOME/build; pwd`"
echo "There are JAR artifacts for multiple versions in the $dir directory. Please clean the project with 'ant realclean' and build it again." 1>&2
exit 1
fi
if [ "$jars_cnt" = "1" ]; then
cassandra_bin="`ls -1 $CASSANDRA_HOME/build/apache-cassandra*.jar | grep -v javadoc | grep -v sources`"
CLASSPATH="$CLASSPATH:$cassandra_bin"
fi
fi
# the default location for commitlogs, sstables, and saved caches
# if not set in cassandra.yaml
cassandra_storagedir=/var/lib/cassandra
# JAVA_HOME can optionally be set here
#JAVA_HOME=/usr/local/jdk6
for jar in "$CASSANDRA_HOME"/lib/*.jar; do
CLASSPATH="$CLASSPATH:$jar"
done
for jar in /usr/share/cassandra/*.jar; do
CLASSPATH=$CLASSPATH:$jar
# JSR223 - collect all JSR223 engines' jars
for jsr223jar in "$CASSANDRA_HOME"/lib/jsr223/*/*.jar; do
CLASSPATH="$CLASSPATH:$jsr223jar"
done
for jar in "$CASSANDRA_HOME"/*.jar; do
CLASSPATH="$CLASSPATH:$jar"
done
CLASSPATH="$CLASSPATH:$EXTRA_CLASSPATH"
# JSR223/JRuby - set ruby lib directory
if [ -d "$CASSANDRA_HOME"/lib/jsr223/jruby/ruby ] ; then
export JVM_OPTS="$JVM_OPTS -Djruby.lib=$CASSANDRA_HOME/lib/jsr223/jruby"
fi
# JSR223/JRuby - set ruby JNI libraries root directory
if [ -d "$CASSANDRA_HOME"/lib/jsr223/jruby/jni ] ; then
export JVM_OPTS="$JVM_OPTS -Djffi.boot.library.path=$CASSANDRA_HOME/lib/jsr223/jruby/jni"
fi
# JSR223/Jython - set python.home system property
if [ -f "$CASSANDRA_HOME"/lib/jsr223/jython/jython.jar ] ; then
export JVM_OPTS="$JVM_OPTS -Dpython.home=$CASSANDRA_HOME/lib/jsr223/jython"
fi
# JSR223/Scala - necessary system property
if [ -f "$CASSANDRA_HOME"/lib/jsr223/scala/scala-compiler.jar ] ; then
export JVM_OPTS="$JVM_OPTS -Dscala.usejavacp=true"
fi
# set JVM javaagent opts to avoid warnings/errors
JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.4.0.jar"
# Added sigar-bin to the java.library.path CASSANDRA-7838
JAVA_OPTS="$JAVA_OPTS:-Djava.library.path=$CASSANDRA_HOME/lib/sigar-bin"
platform=$(uname -m)
if [ -d "$CASSANDRA_HOME"/lib/"$platform" ]; then
for jar in "$CASSANDRA_HOME"/lib/"$platform"/*.jar ; do
@ -134,3 +181,11 @@ for opt in `grep "^-" $JVM_OPTS_FILE` `grep "^-" $JVM_DEP_OPTS_FILE`
do
JVM_OPTS="$JVM_OPTS $opt"
done
# Append additional options when using JDK17+ (CASSANDRA-19001)
USING_JDK=$(command -v javac || command -v "${JAVA_HOME:-/usr}/bin/javac")
if [ -n "$USING_JDK" ] && [ "$JAVA_VERSION" -ge 17 ]; then
JVM_OPTS="$JVM_OPTS --add-exports jdk.attach/sun.tools.attach=ALL-UNNAMED"
JVM_OPTS="$JVM_OPTS --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED"
JVM_OPTS="$JVM_OPTS --add-opens jdk.compiler/com.sun.tools.javac=ALL-UNNAMED"
fi