Skip to content

Commit

Permalink
HBASE-27651 hbase-daemon.sh foreground_start should propagate SIGHUP …
Browse files Browse the repository at this point in the history
…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 <zhangduo@apache.org>
Signed-off-by: Michael Stack <stack@apache.org>
  • Loading branch information
ndimiduk authored Mar 20, 2023
1 parent 0110bf3 commit 814f326
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions bin/hbase-daemon.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down Expand Up @@ -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`"
Expand Down

0 comments on commit 814f326

Please sign in to comment.