Explorar el Código

ZOOKEEPER-983. running zkServer.sh start remotely using ssh hangs (phunt)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1074992 13f79535-47bb-0310-9956-ffa450edef68
Patrick D. Hunt hace 14 años
padre
commit
5cd2fb1b82
Se han modificado 2 ficheros con 16 adiciones y 5 borrados
  1. 2 0
      CHANGES.txt
  2. 14 5
      bin/zkServer.sh

+ 2 - 0
CHANGES.txt

@@ -176,6 +176,8 @@ BUGFIXES:
 
 
   ZOOKEEPER-985. Test BookieRecoveryTest fails on trunk. (fpj via breed)
   ZOOKEEPER-985. Test BookieRecoveryTest fails on trunk. (fpj via breed)
 
 
+  ZOOKEEPER-983. running zkServer.sh start remotely using ssh hangs (phunt)
+
 IMPROVEMENTS:
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)
   (phunt via mahadev)

+ 14 - 5
bin/zkServer.sh

@@ -75,16 +75,24 @@ fi
 
 
 echo "Using config: $ZOOCFG" >&2
 echo "Using config: $ZOOCFG" >&2
 
 
-if [ -z $ZOOPIDFILE ]
-    then ZOOPIDFILE=$(grep dataDir "$ZOOCFG" | sed -e 's/.*=//')/zookeeper_server.pid
+if [ -z $ZOOPIDFILE ]; then
+    ZOO_DATADIR=$(grep dataDir "$ZOOCFG" | sed -e 's/.*=//')
+    if [ ! -d "$ZOO_DATADIR" ]; then
+        mkdir -p "$ZOO_DATADIR"
+    fi
+    ZOOPIDFILE="$ZOO_DATADIR/zookeeper_server.pid"
+else
+    # ensure it exists, otw stop will fail
+    mkdir -p $(dirname "$ZOOPIDFILE")
 fi
 fi
 
 
+_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"
 
 
 case $1 in
 case $1 in
 start)
 start)
     echo  "Starting zookeeper ... "
     echo  "Starting zookeeper ... "
     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 $ZOOMAIN "$ZOOCFG" &
+    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
     /bin/echo -n $! > "$ZOOPIDFILE"
     /bin/echo -n $! > "$ZOOPIDFILE"
     echo STARTED
     echo STARTED
     ;;
     ;;
@@ -93,7 +101,7 @@ start-foreground)
     -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG"
     -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG"
     ;;
     ;;
 print-cmd)
 print-cmd)
-    echo "java -Dzookeeper.log.dir=\"${ZOO_LOG_DIR}\" -Dzookeeper.root.logger=\"${ZOO_LOG4J_PROP}\" -cp \"$CLASSPATH\" $JVMFLAGS $ZOOMAIN \"$ZOOCFG\""
+    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)
 stop)
     echo "Stopping zookeeper ... "
     echo "Stopping zookeeper ... "
@@ -121,7 +129,8 @@ restart)
     "$0" start ${@}
     "$0" start ${@}
     ;;
     ;;
 status)
 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 clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
     if [ "x$STAT" = "x" ]
     if [ "x$STAT" = "x" ]
     then
     then
         echo "Error contacting service. It is probably not running."
         echo "Error contacting service. It is probably not running."