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`"