You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ph...@apache.org on 2011/11/17 06:21:31 UTC

svn commit: r1203053 - in /zookeeper/branches/branch-3.3: CHANGES.txt bin/zkCleanup.sh bin/zkCli.sh bin/zkEnv.sh bin/zkServer.sh conf/zoo_sample.cfg

Author: phunt
Date: Thu Nov 17 05:21:31 2011
New Revision: 1203053

URL: http://svn.apache.org/viewvc?rev=1203053&view=rev
Log:
ZOOKEEPER-1301. backport patches related to the zk startup script from 3.4 to 3.3 release (Giridharan Kesavan via phunt)

Modified:
    zookeeper/branches/branch-3.3/CHANGES.txt
    zookeeper/branches/branch-3.3/bin/zkCleanup.sh
    zookeeper/branches/branch-3.3/bin/zkCli.sh
    zookeeper/branches/branch-3.3/bin/zkEnv.sh
    zookeeper/branches/branch-3.3/bin/zkServer.sh
    zookeeper/branches/branch-3.3/conf/zoo_sample.cfg

Modified: zookeeper/branches/branch-3.3/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/CHANGES.txt?rev=1203053&r1=1203052&r2=1203053&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.3/CHANGES.txt Thu Nov 17 05:21:31 2011
@@ -50,6 +50,20 @@ BUGFIXES:
   
   ZOOKEEPER-1239. add logging/stats to identify fsync stalls. (phunt via camille)
 
+  ZOOKEEPER-1301. backport patches related to the zk startup script
+  from 3.4 to 3.3 release (Giridharan Kesavan via phunt)
+
+    ZOOKEEPER-1301 includes:
+      ZOOKEEPER-905. enhance zkServer.sh for easier zookeeper automation-izing (Nicholas Harteau via mahadev)
+      ZOOKEEPER-796. zkServer.sh should support an external PIDFILE variable (Alex Newman via phunt)
+      ZOOKEEPER-983. running zkServer.sh start remotely using ssh hangs (phunt)
+      ZOOKEEPER-976. ZooKeeper startup script doesn't use JAVA_HOME (phunt)
+      ZOOKEEPER-1013 zkServer.sh usage message should mention all startup options (eugene koontz via mahadev)
+      ZOOKEEPER-1012. support distinct JVMFLAGS for zookeeper server in zkServer.sh and zookeeper client in zkCli.sh (Eugene Koontz via breed)
+      ZOOKEEPER-1061. Zookeeper stop fails if start called twice. (Ted Dunning via mahadev)
+      ZOOKEEPER-1074. zkServer.sh is missing nohup/sleep, which are necessary for remote invocation. (phunt via mahadev)
+      ZOOKEEPER-1119. zkServer stop command incorrectly reading comment lines in zoo.cfg (phunt via mahadev)
+
 Release 3.3.3 - 2011-02-23
 Backward compatible changes:
 

Modified: zookeeper/branches/branch-3.3/bin/zkCleanup.sh
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/bin/zkCleanup.sh?rev=1203053&r1=1203052&r2=1203053&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/bin/zkCleanup.sh (original)
+++ zookeeper/branches/branch-3.3/bin/zkCleanup.sh Thu Nov 17 05:21:31 2011
@@ -36,16 +36,16 @@ ZOOBINDIR=`dirname "$ZOOBIN"`
 
 . "$ZOOBINDIR"/zkEnv.sh
 
-ZOODATADIR=$(grep '^dataDir=' "$ZOOCFG" | sed -e 's/.*=//')
-ZOODATALOGDIR=$(grep '^dataLogDir=' "$ZOOCFG" | sed -e 's/.*=//')
+ZOODATADIR=$(grep "^[[:space:]]*dataDir=" "$ZOOCFG" | sed -e 's/.*=//')
+ZOODATALOGDIR=$(grep "^[[:space:]]*dataLogDir=" "$ZOOCFG" | sed -e 's/.*=//')
 
 if [ "x$ZOODATALOGDIR" = "x" ]
 then
-java "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
+$JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
      -cp "$CLASSPATH" $JVMFLAGS \
      org.apache.zookeeper.server.PurgeTxnLog "$ZOODATADIR" $*
 else
-java "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
+$JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
      -cp "$CLASSPATH" $JVMFLAGS \
      org.apache.zookeeper.server.PurgeTxnLog "$ZOODATALOGDIR" "$ZOODATADIR" $*
 fi

Modified: zookeeper/branches/branch-3.3/bin/zkCli.sh
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/bin/zkCli.sh?rev=1203053&r1=1203052&r2=1203053&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/bin/zkCli.sh (original)
+++ zookeeper/branches/branch-3.3/bin/zkCli.sh Thu Nov 17 05:21:31 2011
@@ -36,6 +36,6 @@ ZOOBINDIR=`dirname "$ZOOBIN"`
 
 . "$ZOOBINDIR"/zkEnv.sh
 
-java "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
-     -cp "$CLASSPATH" $JVMFLAGS \
+$JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
+     -cp "$CLASSPATH" $CLIENT_JVMFLAGS $JVMFLAGS \
      org.apache.zookeeper.ZooKeeperMain $@

Modified: zookeeper/branches/branch-3.3/bin/zkEnv.sh
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/bin/zkEnv.sh?rev=1203053&r1=1203052&r2=1203053&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/bin/zkEnv.sh (original)
+++ zookeeper/branches/branch-3.3/bin/zkEnv.sh Thu Nov 17 05:21:31 2011
@@ -54,6 +54,12 @@ then
     ZOO_LOG4J_PROP="INFO,CONSOLE"
 fi
 
+if [ "$JAVA_HOME" != "" ]; then
+  JAVA="$JAVA_HOME/bin/java"
+else
+  JAVA=java
+fi
+
 #add the zoocfg dir to classpath
 CLASSPATH="$ZOOCFGDIR:$CLASSPATH"
 

Modified: zookeeper/branches/branch-3.3/bin/zkServer.sh
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/bin/zkServer.sh?rev=1203053&r1=1203052&r2=1203053&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/bin/zkServer.sh (original)
+++ zookeeper/branches/branch-3.3/bin/zkServer.sh Thu Nov 17 05:21:31 2011
@@ -32,13 +32,13 @@ fi
 
 if [ "x$JMXDISABLE" = "x" ]
 then
-    echo "JMX enabled by default"
+    echo "JMX enabled by default" >&2
     # for some reason these two options are necessary on jdk6 on Ubuntu
     #   accord to the docs they are not necessary, but otw jconsole cannot
     #   do a local attach
     ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain"
 else
-    echo "JMX disabled by user request"
+    echo "JMX disabled by user request" >&2
     ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain"
 fi
 
@@ -53,11 +53,23 @@ ZOOBINDIR=`dirname "$ZOOBIN"`
 
 . "$ZOOBINDIR"/zkEnv.sh
 
+if [ "x$SERVER_JVMFLAGS" ]
+then
+    JVMFLAGS="$SERVER_JVMFLAGS $JVMFLAGS"
+fi
+
 if [ "x$2" != "x" ]
 then
     ZOOCFG="$ZOOCFGDIR/$2"
 fi
 
+# if we give a more complicated path to the config, don't screw around in $ZOOCFGDIR
+if [ "x`dirname $ZOOCFG`" != "x$ZOOCFGDIR" ]
+then
+    ZOOCFG="$2"
+    echo "Using config:$2" >&2
+fi
+
 if $cygwin
 then
     ZOOCFG=`cygpath -wp "$ZOOCFG"`
@@ -67,34 +79,62 @@ else
     KILL=kill
 fi
 
-echo "Using config: $ZOOCFG"
+echo "Using config: $ZOOCFG" >&2
 
-ZOOPIDFILE=$(grep dataDir "$ZOOCFG" | sed -e 's/.*=//')/zookeeper_server.pid
+if [ -z $ZOOPIDFILE ]
+  then ZOOPIDFILE=$(grep dataDir "$ZOOCFG" | sed -e 's/.*=//')/zookeeper_server.pid
+fi
 
+_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"
 
 case $1 in
 start)
-    echo  "Starting zookeeper ... "
-    java  "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
-    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" &
-    /bin/echo -n $! > "$ZOOPIDFILE"
-    echo STARTED
+    echo  -n "Starting zookeeper ... "
+    if [ -f $ZOOPIDFILE ]; then
+      if kill -0 `cat $ZOOPIDFILE` > /dev/null 2>&1; then
+         echo $command already running as process `cat $ZOOPIDFILE`. 
+         exit 0
+      fi
+    fi
+    nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
+    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
+    if [ $? -eq 0 ]
+    then
+      if /bin/echo -n $! > "$ZOOPIDFILE"
+      then
+        sleep 1
+        echo STARTED
+      else
+        echo FAILED TO WRITE PID
+        exit 1
+      fi
+    else
+      echo SERVER DID NOT START
+      exit 1
+    fi
+    ;;
+start-foreground)
+    $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
+    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG"
+    ;;
+print-cmd)
+    echo "$JAVA -Dzookeeper.log.dir=\"${ZOO_LOG_DIR}\" -Dzookeeper.root.logger=\"${ZOO_LOG4J_PROP}\" -cp \"$CLASSPATH\" $JVMFLAGS $ZOOMAIN \"$ZOOCFG\" > \"$_ZOO_DAEMON_OUT\" 2>&1 < /dev/null"
     ;;
 stop)
-    echo "Stopping zookeeper ... "
+    echo -n "Stopping zookeeper ... "
     if [ ! -f "$ZOOPIDFILE" ]
     then
-    echo "no zookeeper to stop (could not find file $ZOOPIDFILE)"
+      echo "no zookeeper to stop (could not find file $ZOOPIDFILE)"
     else
-    $KILL -9 $(cat "$ZOOPIDFILE")
-    rm "$ZOOPIDFILE"
-    echo STOPPED
+      $KILL -9 $(cat "$ZOOPIDFILE")
+      rm "$ZOOPIDFILE"
+      echo STOPPED
     fi
     ;;
 upgrade)
     shift
     echo "upgrading the servers to 3.*"
-    java "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
+    $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
     -cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.server.upgrade.UpgradeMain ${@}
     echo "Upgrading ... "
     ;;
@@ -105,15 +145,18 @@ restart)
     "$0" start ${@}
     ;;
 status)
-    STAT=`echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
+    # -q is necessary on some versions of linux where nc returns too quickly, and no stat result is output
+    STAT=`echo stat | nc -q 1 localhost $(grep "^[[:space:]]*clientPort" "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
     if [ "x$STAT" = "x" ]
     then
         echo "Error contacting service. It is probably not running."
+        exit 1
     else
         echo $STAT
+        exit 0
     fi
     ;;
 *)
-    echo "Usage: $0 {start|stop|restart|status}" >&2
+    echo "Usage: $0 {start|start-foreground|stop|restart|status|upgrade|print-cmd}" >&2
 
 esac

Modified: zookeeper/branches/branch-3.3/conf/zoo_sample.cfg
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/conf/zoo_sample.cfg?rev=1203053&r1=1203052&r2=1203053&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/conf/zoo_sample.cfg (original)
+++ zookeeper/branches/branch-3.3/conf/zoo_sample.cfg Thu Nov 17 05:21:31 2011
@@ -7,6 +7,6 @@ initLimit=10
 # sending a request and getting an acknowledgement
 syncLimit=5
 # the directory where the snapshot is stored.
-dataDir=/export/crawlspace/mahadev/zookeeper/server1/data
+dataDir=/tmp/zookeeper
 # the port at which the clients will connect
 clientPort=2181