You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/07/30 05:00:10 UTC
svn commit: r1152421 - in /cassandra/branches/cassandra-0.8: CHANGES.txt
bin/cassandra conf/cassandra-env.sh
Author: jbellis
Date: Sat Jul 30 03:00:09 2011
New Revision: 1152421
URL: http://svn.apache.org/viewvc?rev=1152421&view=rev
Log:
improved POSIX compatibility of start scripts
patch by Kjell Andreassen and Paul Cannon for CASSANDRA-2965
Modified:
cassandra/branches/cassandra-0.8/CHANGES.txt
cassandra/branches/cassandra-0.8/bin/cassandra
cassandra/branches/cassandra-0.8/conf/cassandra-env.sh
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1152421&r1=1152420&r2=1152421&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Sat Jul 30 03:00:09 2011
@@ -15,6 +15,7 @@
* speedup bytes to hex conversions dramatically (CASSANDRA-2850)
* Flush memtables on shutdown when durable writes are disabled
(CASSANDRA-2958)
+ * improved POSIX compatibility of start scripts (CASsANDRA-2965)
0.8.2
Modified: cassandra/branches/cassandra-0.8/bin/cassandra
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/bin/cassandra?rev=1152421&r1=1152420&r2=1152421&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/bin/cassandra (original)
+++ cassandra/branches/cassandra-0.8/bin/cassandra Sat Jul 30 03:00:09 2011
@@ -61,32 +61,35 @@
# Be aware that you will be entirely responsible for populating the needed
# environment variables.
+# NB: Developers should be aware that this script should remain compatible with
+# POSIX sh and Solaris sh. This means, in particular, no $(( )) and no $( ).
+
# If an include wasn't specified in the environment, then search for one...
if [ "x$CASSANDRA_INCLUDE" = "x" ]; then
# Locations (in order) to use when searching for an include file.
for include in /usr/share/cassandra/cassandra.in.sh \
/usr/local/share/cassandra/cassandra.in.sh \
/opt/cassandra/cassandra.in.sh \
- ~/.cassandra.in.sh \
- `dirname $0`/cassandra.in.sh; do
- if [ -r $include ]; then
- . $include
+ "$HOME/.cassandra.in.sh" \
+ "`dirname $0`/cassandra.in.sh"; do
+ if [ -r "$include" ]; then
+ . "$include"
break
fi
done
# ...otherwise, source the specified include.
-elif [ -r $CASSANDRA_INCLUDE ]; then
- . $CASSANDRA_INCLUDE
+elif [ -r "$CASSANDRA_INCLUDE" ]; then
+ . "$CASSANDRA_INCLUDE"
fi
# Use JAVA_HOME if set, otherwise look for java in PATH
if [ -n "$JAVA_HOME" ]; then
- JAVA=$JAVA_HOME/bin/java
+ JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
-if [ -z $CASSANDRA_CONF -o -z $CLASSPATH ]; then
+if [ -z "$CASSANDRA_CONF" -o -z "$CLASSPATH" ]; then
echo "You must set the CASSANDRA_CONF and CLASSPATH vars" >&2
exit 1
fi
@@ -119,11 +122,11 @@ launch_service()
# to close stdout/stderr, but it's up to us not to background.
if [ "x$foreground" != "x" ]; then
cassandra_parms="$cassandra_parms -Dcassandra-foreground=yes"
- exec $JAVA $JVM_OPTS $cassandra_parms -cp $CLASSPATH $props $class
+ exec "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class"
# Startup CassandraDaemon, background it, and write the pid.
else
- exec $JAVA $JVM_OPTS $cassandra_parms -cp $CLASSPATH $props $class <&- &
- [ ! -z $pidpath ] && printf "%d" $! > $pidpath
+ exec "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class" <&- &
+ [ ! -z "$pidpath" ] && printf "%d" $! > "$pidpath"
fi
return $?
@@ -150,7 +153,7 @@ while true; do
exit 0
;;
-v)
- $JAVA -cp $CLASSPATH org.apache.cassandra.tools.GetVersion
+ "$JAVA" -cp "$CLASSPATH" org.apache.cassandra.tools.GetVersion
exit 0
;;
-D)
Modified: cassandra/branches/cassandra-0.8/conf/cassandra-env.sh
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/conf/cassandra-env.sh?rev=1152421&r1=1152420&r2=1152421&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/conf/cassandra-env.sh (original)
+++ cassandra/branches/cassandra-0.8/conf/cassandra-env.sh Sat Jul 30 03:00:09 2011
@@ -24,10 +24,15 @@ calculate_heap_sizes()
;;
FreeBSD)
system_memory_in_bytes=`sysctl hw.physmem | awk '{print $2}'`
- system_memory_in_mb=$((system_memory_in_bytes / 1024 / 1024))
+ system_memory_in_mb=`expr $system_memory_in_bytes / 1024 / 1024`
system_cpu_cores=`sysctl hw.ncpu | awk '{print $2}'`
break
;;
+ SunOS)
+ system_memory_in_mb=`prtconf | awk '/Memory size:/ {print $3}'`
+ system_cpu_cores=`psrinfo | wc -l`
+ break
+ ;;
*)
# assume reasonable defaults for e.g. a modern desktop or
# cheap server
@@ -35,14 +40,14 @@ calculate_heap_sizes()
system_cpu_cores="2"
;;
esac
- max_heap_size_in_mb=$((system_memory_in_mb / 2))
+ max_heap_size_in_mb=`expr $system_memory_in_mb / 2`
MAX_HEAP_SIZE="${max_heap_size_in_mb}M"
# Young gen: min(max_sensible_per_modern_cpu_core * num_cores, 1/4 * heap size)
max_sensible_yg_per_core_in_mb="100"
- max_sensible_yg_in_mb=$((max_sensible_yg_per_core_in_mb * system_cpu_cores))
+ max_sensible_yg_in_mb=`expr $max_sensible_yg_per_core_in_mb "*" $system_cpu_cores`
- desired_yg_in_mb=$((max_heap_size_in_mb / 4))
+ desired_yg_in_mb=`expr $max_heap_size_in_mb / 4`
if [ "$desired_yg_in_mb" -gt "$max_sensible_yg_in_mb" ]
then
@@ -92,7 +97,7 @@ JMX_PORT="7199"
JVM_OPTS="$JVM_OPTS -ea"
# add the jamm javaagent
-check_openjdk=$("${JAVA:-java}" -version 2>&1 | awk '{if (NR == 2) {print $1}}')
+check_openjdk=`"${JAVA:-java}" -version 2>&1 | awk '{if (NR == 2) {print $1}}'`
if [ "$check_openjdk" != "OpenJDK" ]
then
JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.2.jar"