瀏覽代碼

ZOOKEEPER-1061. Zookeeper stop fails if start called twice. (Ted Dunning via mahadev)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1103798 13f79535-47bb-0310-9956-ffa450edef68
Mahadev Konar 14 年之前
父節點
當前提交
59ac9fa789
共有 3 個文件被更改,包括 34 次插入10 次删除
  1. 2 0
      CHANGES.txt
  2. 29 9
      bin/zkServer.sh
  3. 3 1
      conf/zoo_sample.cfg

+ 2 - 0
CHANGES.txt

@@ -209,6 +209,8 @@ BUGFIXES:
   ZOOKEEPER-1033. c client should install includes into INCDIR/zookeeper, not INCDIR/c-client-src
   (Nicholas Harteau via mahadev)
 
+  ZOOKEEPER-1061. Zookeeper stop fails if start called twice. (Ted Dunning via mahadev)
+
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)

+ 29 - 9
bin/zkServer.sh

@@ -95,11 +95,28 @@ _ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"
 
 case $1 in
 start)
-    echo  "Starting zookeeper ... "
+    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
     $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 &
-    /bin/echo -n $! > "$ZOOPIDFILE"
-    echo STARTED
+    if [ $? -eq 0 ]
+    then
+      if /bin/echo -n $! > "$ZOOPIDFILE"
+      then
+        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}" \
@@ -109,15 +126,16 @@ 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 "error: could not find file $ZOOPIDFILE"
-    exit 1
+      echo "error: could not find file $ZOOPIDFILE"
+      exit 1
     else
-    $KILL -9 $(cat "$ZOOPIDFILE")
-    rm "$ZOOPIDFILE"
-    echo STOPPED
+      $KILL -9 $(cat "$ZOOPIDFILE")
+      rm "$ZOOPIDFILE"
+      echo STOPPED
+      exit 0
     fi
     ;;
 upgrade)
@@ -139,8 +157,10 @@ status)
     if [ "x$STAT" = "x" ]
     then
         echo "Error contacting service. It is probably not running."
+        exit 1
     else
         echo $STAT
+        exit 0
     fi
     ;;
 *)

+ 3 - 1
conf/zoo_sample.cfg

@@ -7,6 +7,8 @@ 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
+# do not use /tmp for storage, /tmp here is just 
+# example sakes.
+dataDir=/tmp/zookeeper
 # the port at which the clients will connect
 clientPort=2181