You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by nd...@apache.org on 2023/03/20 14:38:35 UTC

[hbase] branch branch-2.4 updated: HBASE-27651 hbase-daemon.sh foreground_start should propagate SIGHUP and SIGTERM

This is an automated email from the ASF dual-hosted git repository.

ndimiduk pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.4 by this push:
     new 5b50d70e40a HBASE-27651 hbase-daemon.sh foreground_start should propagate SIGHUP and SIGTERM
5b50d70e40a is described below

commit 5b50d70e40aedbb5ab29974a2523caae50e4e03d
Author: Nick Dimiduk <nd...@apache.org>
AuthorDate: Mon Mar 20 14:58:15 2023 +0100

    HBASE-27651 hbase-daemon.sh foreground_start should propagate SIGHUP and SIGTERM
    
    Introduce separate `trap`s for SIGHUP vs. the rest. Treat `SIGINT`, `SIGKILL`, and `EXIT` identically, as before. Use the signal name without `SIG` prefix for increased portability, as per the POSIX man page for `trap`.
    
    `SIGTERM` handler will now honor `HBASE_STOP_TIMEOUT` as described in the file header.
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
    Signed-off-by: Michael Stack <st...@apache.org>
---
 bin/hbase-daemon.sh | 40 +++++++++++++++++++++++++++-------------
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/bin/hbase-daemon.sh b/bin/hbase-daemon.sh
index 598e49c7413..b3514bfd42a 100755
--- a/bin/hbase-daemon.sh
+++ b/bin/hbase-daemon.sh
@@ -78,22 +78,34 @@ hbase_rotate_log ()
     fi
 }
 
-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
+function sighup_handler
+{
+  # pass through SIGHUP if we can
+  if [ -f "${HBASE_PID}" ] ; then
+    kill -s HUP "$(cat "${HBASE_PID}")"
   fi
+}
 
-  if [ -f ${HBASE_ZNODE_FILE} ]; then
-    if [ "$command" = "master" ]; then
-      HBASE_OPTS="$HBASE_OPTS $HBASE_MASTER_OPTS" $bin/hbase master clear > /dev/null 2>&1
+function sigterm_handler
+{
+  if [ -f "${HBASE_PID}" ]; then
+    kill -s TERM "$(cat "${HBASE_PID}")"
+    waitForProcessEnd "$(cat "${HBASE_PID}")" "${command}"
+  fi
+  cleanAfterRun
+}
+
+cleanAfterRun() {
+  rm -f "${HBASE_PID}" > /dev/null 2>&1
+  if [ -f "${HBASE_ZNODE_FILE}" ]; then
+    if [ "${command}" = "master" ]; then
+      HBASE_OPTS="$HBASE_OPTS $HBASE_MASTER_OPTS" "${bin}/hbase" master clear > /dev/null 2>&1
     else
-      #call ZK to delete the node
-      ZNODE=`cat ${HBASE_ZNODE_FILE}`
-      HBASE_OPTS="$HBASE_OPTS $HBASE_REGIONSERVER_OPTS" $bin/hbase zkcli delete ${ZNODE} > /dev/null 2>&1
+      # call ZK to delete the node
+      ZNODE="$(cat "${HBASE_ZNODE_FILE}")"
+      HBASE_OPTS="$HBASE_OPTS $HBASE_REGIONSERVER_OPTS" "${bin}/hbase" zkcli delete "${ZNODE}" > /dev/null 2>&1
     fi
-    rm ${HBASE_ZNODE_FILE}
+    rm -f "${HBASE_ZNODE_FILE}" > /dev/null 2>&1
   fi
 }
 
@@ -225,7 +237,9 @@ case $startStop in
   ;;
 
 (foreground_start)
-    trap cleanAfterRun SIGHUP SIGINT SIGTERM EXIT
+    trap sighup_handler HUP
+    trap sigterm_handler INT TERM EXIT
+
     if [ "$HBASE_NO_REDIRECT_LOG" != "" ]; then
         # NO REDIRECT
         echo "`date` Starting $command on `hostname`"