diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index 3b08f838a..b01d6ca27 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -1,11 +1,10 @@ #!/bin/bash set -x -e -u +export DEBUG=1 export CODE_PATH=${CODE_PATH:-"/emqx"} export EMQX_NAME=${EMQX_NAME:-"emqx"} export PACKAGE_PATH="${CODE_PATH}/_packages/${EMQX_NAME}" export RELUP_PACKAGE_PATH="${CODE_PATH}/_upgrade_base" -# export EMQX_NODE_NAME="emqx-on-$(uname -m)@127.0.0.1" -# export EMQX_NODE_COOKIE=$(date +%s%N) case "$(uname -m)" in x86_64) @@ -122,6 +121,9 @@ run_test(){ tee -a "$emqx_env_vars" < .env - docker exec -i erlang bash -c "make cover" - docker exec --env-file .env -i erlang bash -c "make coveralls" + docker exec -i ${{ matrix.otp_release }} bash -c "make cover" + docker exec --env-file .env -i ${{ matrix.otp_release }} bash -c "make coveralls" - name: cat rebar.crashdump if: failure() run: if [ -f 'rebar3.crashdump' ];then cat 'rebar3.crashdump'; fi diff --git a/.tool-versions b/.tool-versions index b87853803..3eb01f497 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -erlang 24.0.1-emqx-1 +erlang 24.0.5-emqx-1 diff --git a/apps/emqx_retainer/rebar.config b/apps/emqx_retainer/rebar.config index 7e762cb72..b49f979ac 100644 --- a/apps/emqx_retainer/rebar.config +++ b/apps/emqx_retainer/rebar.config @@ -19,6 +19,6 @@ [{test, [{deps, [ - {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3"}}}]} + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.4.0"}}}]} ]} ]}. diff --git a/bin/emqx b/bin/emqx index 6b6a6504c..a286d2801 100755 --- a/bin/emqx +++ b/bin/emqx @@ -302,9 +302,19 @@ bootstrapd() { # check if a PID is down is_down() { PID="$1" - if kill -s 0 "$PID" 2>/dev/null; then + if ps -p "$PID" >/dev/null; then + # still around + # shellcheck disable=SC2009 # this grep pattern is not a part of the progra names + if ps -p "$PID" | grep -q 'defunct'; then + # zombie state, print parent pid + parent="$(ps -o ppid= -p "$PID" | tr -d ' ')" + echo "WARN: $PID is marked , parent:" + ps -p "$parent" + return 0 + fi return 1 fi + # it's gone return 0 } @@ -484,12 +494,12 @@ case "$1" in exit 1 fi WAIT_TIME="${WAIT_FOR_ERLANG_STOP:-60}" - if ! wait_for "$WAIT_TIME" is_down "$PID"; then + if ! wait_for "$WAIT_TIME" 'is_down' "$PID"; then msg="dangling after ${WAIT_TIME} seconds" # also log to syslog logger -t "${REL_NAME}[${PID}]" "STOP: $msg" # log to user console - echoerr "STOP: $msg" + echoerr "stop failed, $msg" exit 1 fi logger -t "${REL_NAME}[${PID}]" "STOP: OK"