hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ecl...@apache.org
Subject hbase git commit: HBASE-12964 Add the ability for hbase-daemon.sh to start in the foreground
Date Tue, 03 Feb 2015 23:12:37 GMT
Repository: hbase
Updated Branches:
  refs/heads/0.98 b39e158c3 -> c1a776293


HBASE-12964 Add the ability for hbase-daemon.sh to start in the foreground


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c1a77629
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c1a77629
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c1a77629

Branch: refs/heads/0.98
Commit: c1a776293c81e10ff834f80d466728346b8b0fc9
Parents: b39e158
Author: Elliott Clark <eclark@apache.org>
Authored: Tue Feb 3 10:58:15 2015 -0800
Committer: Elliott Clark <eclark@apache.org>
Committed: Tue Feb 3 15:10:00 2015 -0800

----------------------------------------------------------------------
 bin/hbase-daemon.sh | 81 +++++++++++++++++++++++++++---------------------
 1 file changed, 46 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/c1a77629/bin/hbase-daemon.sh
----------------------------------------------------------------------
diff --git a/bin/hbase-daemon.sh b/bin/hbase-daemon.sh
index 4dcc520..94ab2d1 100755
--- a/bin/hbase-daemon.sh
+++ b/bin/hbase-daemon.sh
@@ -35,7 +35,7 @@
 # Modelled after $HADOOP_HOME/bin/hadoop-daemon.sh
 
 usage="Usage: hbase-daemon.sh [--config <conf-dir>]\
- (start|stop|restart|autorestart) <hbase-command> \
+ (start|stop|restart|autorestart|foreground_start) <hbase-command> \
  <args...>"
 
 # if no args specified, show usage
@@ -74,25 +74,31 @@ hbase_rotate_log ()
     fi
 }
 
-cleanZNode() {
-  if [ -f $HBASE_ZNODE_FILE ]; then
+cleanAfterRun() {
+  if [ -f ${HBASE_PID} ]; then
+    # If the process is still running time to tear it down.
+    kill -9 `cat ${HBASE_PID}` > /dev/null 2>&1
+    rm -f ${HBASE_PID} > /dev/null 2>&1
+  fi
+
+  if [ -f ${HBASE_ZNODE_FILE} ]; then
     if [ "$command" = "master" ]; then
       $bin/hbase master clear > /dev/null 2>&1
     else
       #call ZK to delete the node
-      ZNODE=`cat $HBASE_ZNODE_FILE`
-      $bin/hbase zkcli delete $ZNODE > /dev/null 2>&1
+      ZNODE=`cat ${HBASE_ZNODE_FILE}`
+      $bin/hbase zkcli delete ${ZNODE} > /dev/null 2>&1
     fi
-    rm $HBASE_ZNODE_FILE
+    rm ${HBASE_ZNODE_FILE}
   fi
 }
 
 check_before_start(){
     #ckeck if the process is not running
     mkdir -p "$HBASE_PID_DIR"
-    if [ -f $pid ]; then
-      if kill -0 `cat $pid` > /dev/null 2>&1; then
-        echo $command running as process `cat $pid`.  Stop it first.
+    if [ -f $HBASE_PID ]; then
+      if kill -0 `cat $HBASE_PID` > /dev/null 2>&1; then
+        echo $command running as process `cat $HBASE_PID`.  Stop it first.
         exit 1
       fi
     fi
@@ -153,18 +159,18 @@ if [ -z "${HBASE_SECURITY_LOGGER}" ]; then
 export HBASE_SECURITY_LOGGER=${HBASE_SECURITY_LOGGER:-"INFO,RFAS"}
 fi
 
-logout=$HBASE_LOG_DIR/$HBASE_LOG_PREFIX.out
-loggc=$HBASE_LOG_DIR/$HBASE_LOG_PREFIX.gc
-loglog="${HBASE_LOG_DIR}/${HBASE_LOGFILE}"
-pid=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.pid
+HBASE_LOGOUT=${HBASE_LOGOUT:-"$HBASE_LOG_DIR/$HBASE_LOG_PREFIX.out"}
+HBASE_LOGGC=${HBASE_LOGGC:-"$HBASE_LOG_DIR/$HBASE_LOG_PREFIX.gc"}
+HBASE_LOGLOG=${HBASE_LOGLOG:-"${HBASE_LOG_DIR}/${HBASE_LOGFILE}"}
+HBASE_PID=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.pid
 export HBASE_ZNODE_FILE=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.znode
 export HBASE_START_FILE=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.autorestart
 
 if [ -n "$SERVER_GC_OPTS" ]; then
-  export SERVER_GC_OPTS=${SERVER_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"}
+  export SERVER_GC_OPTS=${SERVER_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${HBASE_LOGGC}"}
 fi
 if [ -n "$CLIENT_GC_OPTS" ]; then
-  export CLIENT_GC_OPTS=${CLIENT_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"}
+  export CLIENT_GC_OPTS=${CLIENT_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${HBASE_LOGGC}"}
 fi
 
 # Set default scheduling priority
@@ -179,30 +185,35 @@ case $startStop in
 
 (start)
     check_before_start
-    hbase_rotate_log $logout
-    hbase_rotate_log $loggc
-    echo starting $command, logging to $logout
-    nohup $thiscmd --config "${HBASE_CONF_DIR}" internal_start $command $args < /dev/null
> ${logout} 2>&1  &
-    sleep 1; head "${logout}"
+    hbase_rotate_log $HBASE_LOGOUT
+    hbase_rotate_log $HBASE_LOGGC
+    echo starting $command, logging to $HBASE_LOGOUT
+    nohup $thiscmd --config "${HBASE_CONF_DIR}" \
+        foreground_start $command $args < /dev/null > ${HBASE_LOGOUT} 2>&1 
&
+    sleep 1; head "${HBASE_LOGOUT}"
   ;;
 
 (autorestart)
     check_before_start
-    hbase_rotate_log $logout
-    hbase_rotate_log $loggc
-    nohup $thiscmd --config "${HBASE_CONF_DIR}" internal_autorestart $command $args <
/dev/null > ${logout} 2>&1  &
+    hbase_rotate_log $HBASE_LOGOUT
+    hbase_rotate_log $HBASE_LOGGC
+    nohup $thiscmd --config "${HBASE_CONF_DIR}" \
+        internal_autorestart $command $args < /dev/null > ${HBASE_LOGOUT} 2>&1
 &
   ;;
 
-(internal_start)
+(foreground_start)
     # Add to the command log file vital stats on our environment.
-    echo "`date` Starting $command on `hostname`" >> $loglog
-    echo "`ulimit -a`" >> $loglog 2>&1
+    echo "`date` Starting $command on `hostname`" >> ${HBASE_LOGLOG}
+    `ulimit -a` >> "$HBASE_LOGLOG" 2>&1
     nice -n $HBASE_NICENESS "$HBASE_HOME"/bin/hbase \
         --config "${HBASE_CONF_DIR}" \
-        $command "$@" start >> "$logout" 2>&1 &
-    echo $! > $pid
+        $command "$@" start >> ${HBASE_LOGOUT} 2>&1 &
+    echo $! > ${HBASE_PID}
+    # in case the parent shell gets the kill make sure to trap signals.
+    # Only one will get called. Either the trap or the flow will go through.
+    trap cleanAfterRun SIGHUP SIGINT SIGTERM EXIT
     wait
-    cleanZNode
+    cleanAfterRun
   ;;
 
 (internal_autorestart)
@@ -211,7 +222,7 @@ case $startStop in
     while true
       do
         lastLaunchDate=`date +%s`
-        $thiscmd --config "${HBASE_CONF_DIR}" internal_start $command $args
+        $thiscmd --config "${HBASE_CONF_DIR}" foreground_start $command $args
 
         #if the file does not exist it means that it was not stopped properly by the stop
command
         if [ ! -f "$HBASE_START_FILE" ]; then
@@ -247,12 +258,12 @@ case $startStop in
 
 (stop)
     rm -f "$HBASE_START_FILE"
-    if [ -f $pid ]; then
-      pidToKill=`cat $pid`
+    if [ -f $HBASE_PID ]; then
+      pidToKill=`cat $HBASE_PID`
       # kill -0 == see if the PID exists
       if kill -0 $pidToKill > /dev/null 2>&1; then
         echo -n stopping $command
-        echo "`date` Terminating $command" >> $loglog
+        echo "`date` Terminating $command" >> $HBASE_LOGLOG
         kill $pidToKill > /dev/null 2>&1
         waitForProcessEnd $pidToKill $command
       else
@@ -260,9 +271,9 @@ case $startStop in
         echo no $command to stop because kill -0 of pid $pidToKill failed with status $retval
       fi
     else
-      echo no $command to stop because no pid file $pid
+      echo no $command to stop because no pid file $HBASE_PID
     fi
-    rm -f $pid
+    rm -f $HBASE_PID
   ;;
 
 (restart)


Mime
View raw message