Do not source cassandra-env.sh unnecessarily in nodetool and other tooling

Sourcing cassandra-env.sh in bin/nodetool just to pick JMX_PORT from there
has undesirable side-effect of not being able to run nodetool when
MAX_HEAP_SIZE in cassandra-env.sh is uncommented.

patch by Stefan Miklosovic; reviewed by Dmitry Konstantinov, Michael Semb Wever for CASSANDRA-20745
This commit is contained in:
Stefan Miklosovic 2025-07-28 18:23:54 +02:00
parent cf83f8b2a4
commit 96a6a7bc12
No known key found for this signature in database
GPG Key ID: 32F35CB2F546D93E
4 changed files with 18 additions and 28 deletions

View File

@ -1,4 +1,5 @@
5.0.5
* Do not source cassandra-env.sh unnecessarily in nodetool and other tooling (CASSANDRA-20745)
* Make source distribution buildable by ant artifacts as doc/scripts/process-native-protocol-specs-in-docker.sh was not executable (CASSANDRA-20802)
* Fix StorageService JMX mbean not available during bootstrap (CASSANDRA-19902)
* SSTableIndexWriter#abort() should log more quietly in cases where an exception is not provided (CASSANDRA-20695)

View File

@ -43,13 +43,19 @@ if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
exit 1
fi
# Run cassandra-env.sh to pick up JMX_PORT
JMX_PORT=""
# Try to parse port from cassandra-env.sh without sourcing it
if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
JVM_OPTS_SAVE=$JVM_OPTS
MAX_HEAP_SIZE_SAVE=$MAX_HEAP_SIZE
. "$CASSANDRA_CONF/cassandra-env.sh"
MAX_HEAP_SIZE=$MAX_HEAP_SIZE_SAVE
JVM_OPTS="$JVM_OPTS_SAVE"
jmx_port_property=$(grep "^JMX_PORT=\"[0-9]\+\"$" "$CASSANDRA_CONF/cassandra-env.sh")
if [ ! "x${jmx_port_property}" = "x" ]; then
JMX_PORT=$(echo "${jmx_port_property}" | sed s/\"//g | cut -d "=" -f2)
fi
fi
# If, by any chance, it is not there, set it to default.
if [ "x$JMX_PORT" = "x" ]; then
JMX_PORT=7199
fi
# JMX Port passed via cmd line args (-p 9999 / --port 9999 / --port=9999)
@ -98,6 +104,11 @@ if [ "x$MAX_HEAP_SIZE" = "x" ]; then
MAX_HEAP_SIZE="128m"
fi
# Sets the path where logback and GC logs are written.
if [ "x$CASSANDRA_LOG_DIR" = "x" ] ; then
CASSANDRA_LOG_DIR="$CASSANDRA_HOME/logs"
fi
CMD=$(echo "$JAVA" $JAVA_AGENT -ea -cp "$CLASSPATH" $JVM_OPTS -Xmx$MAX_HEAP_SIZE \
-XX:ParallelGCThreads=1 \
-Dcassandra.storagedir="$cassandra_storagedir" \

View File

@ -37,17 +37,6 @@ if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
exit 1
fi
# Run cassandra-env.sh to pick up JMX_PORT
if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
JVM_OPTS_SAVE=$JVM_OPTS
MAX_HEAP_SIZE_SAVE=$MAX_HEAP_SIZE
. "$CASSANDRA_CONF/cassandra-env.sh"
MAX_HEAP_SIZE=$MAX_HEAP_SIZE_SAVE
JVM_OPTS=$JVM_OPTS_SAVE
fi
# JMX Port passed via cmd line args (-p 9999 / --port 9999 / --port=9999)
# should override the value from cassandra-env.sh
ARGS=""
JVM_ARGS=""
while true

View File

@ -37,17 +37,6 @@ if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
exit 1
fi
# Run cassandra-env.sh to pick up JMX_PORT
if [ -f "$CASSANDRA_CONF/cassandra-env.sh" ]; then
JVM_OPTS_SAVE=$JVM_OPTS
MAX_HEAP_SIZE_SAVE=$MAX_HEAP_SIZE
. "$CASSANDRA_CONF/cassandra-env.sh"
MAX_HEAP_SIZE=$MAX_HEAP_SIZE_SAVE
JVM_OPTS=$JVM_OPTS_SAVE
fi
# JMX Port passed via cmd line args (-p 9999 / --port 9999 / --port=9999)
# should override the value from cassandra-env.sh
ARGS=""
JVM_ARGS=""
while true