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"