From 8151f79f45314a56a803a8eae77945f01bc00658 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Tue, 31 May 2022 16:31:16 +0200 Subject: [PATCH] fix(bin/emqx): turn off debug print when need to capture stderror --- bin/emqx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/bin/emqx b/bin/emqx index af6751fa8..585dd583f 100755 --- a/bin/emqx +++ b/bin/emqx @@ -5,9 +5,7 @@ set -euo pipefail DEBUG="${DEBUG:-0}" -if [ "$DEBUG" -eq 1 ]; then - set -x -fi +[ "$DEBUG" -eq 1 ] && set -x RUNNER_ROOT_DIR="$(cd "$(dirname "$(readlink "$0" || echo "$0")")"/..; pwd -P)" @@ -40,9 +38,12 @@ export ERTS_LIB_DIR="$RUNNER_ROOT_DIR/lib" DYNLIBS_DIR="$RUNNER_ROOT_DIR/dynlibs" # Echo to stderr on errors -echoerr() { echo -e "$*" 1>&2; } +echoerr() { + echo -e "$*" 1>&2; +} die() { + set +x echoerr "ERROR: $1" errno=${2:-1} exit "$errno" @@ -300,6 +301,8 @@ if [ "$IS_BOOT_COMMAND" = 'yes' ]; then if [ "$LD_LIBRARY_PATH" != "$DYNLIBS_DIR" ]; then export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH" fi + ## Turn off debug, because COMPATIBILITY_INFO needs to capture stderr + set +x COMPATIBILITY_INFO="$(compatiblity_info 2>&1 || true)" if ! (echo -e "$COMPATIBILITY_INFO" | grep -q 'BEAM_OK'); then ## not able to start beam.smp @@ -316,7 +319,7 @@ if [ "$IS_BOOT_COMMAND" = 'yes' ]; then fi echoerr "Using libs from '${DYNLIBS_DIR}' due to missing from the OS." fi - export COMPATIBILITY_INFO + [ "$DEBUG" -eq 1 ] && set -x fi NO_EPMD="-start_epmd false -epmd_module ekka_epmd -proto_dist ekka" @@ -606,6 +609,7 @@ latest_vm_args() { if [ -f "$vm_args_file" ]; then echo "$vm_args_file" else + set +x echoerr "Node not initialized?" echoerr "Generated config file vm.*.args is not found for command '$COMMAND'" echoerr "in config dir: $CONFIGS_DIR" @@ -785,8 +789,7 @@ case "${COMMAND}" in # Wait for the node to completely stop... PID="$(relx_get_pid)" if ! relx_nodetool "stop"; then - echoerr "Graceful shutdown failed PID=[$PID]" - exit 1 + die "Graceful shutdown failed PID=[$PID]" fi WAIT_TIME="${EMQX_WAIT_FOR_STOP:-120}" if ! wait_for "$WAIT_TIME" 'is_down' "$PID"; then