From 882ee754e5b6ae42dbf3705c4c63bb7d409df0d7 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Mon, 29 Aug 2022 11:08:10 +0200 Subject: [PATCH 1/8] fix(emqx): Check Erlang start after su command When installed from RPM or DEB, In case EMQX in started by root, the boot script changes user to emqx and then re-enter with the same args. Prior to this change, the Erlang start check is done before su, causing it to be checked twice. This commit moves the Erlang start check to after th su --- bin/emqx | 86 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/bin/emqx b/bin/emqx index f129a8447..66696052e 100755 --- a/bin/emqx +++ b/bin/emqx @@ -37,49 +37,6 @@ ERTS_LIB_DIR="$ERTS_DIR/../lib" # the 'x' attributes may get lost if the files are extracted from a relup package find "$BINDIR" -exec chmod a+x {} \; -# Echo to stderr on errors -echoerr() { echo "$*" 1>&2; } - -die() { - set +x - echoerr "ERROR: $1" - errno=${2:-1} - exit "$errno" -} - -assert_node_alive() { - if ! relx_nodetool "ping" > /dev/null; then - die "node_is_not_running!" 1 - fi -} - -check_erlang_start() { - # set ERL_CRASH_DUMP_BYTES to zero so it will not write a crash dump file - env ERL_CRASH_DUMP_BYTES=0 "$BINDIR/$PROGNAME" -boot "$REL_DIR/start_clean" -eval "crypto:start(),halt()" -} - -if ! check_erlang_start >/dev/null 2>&1; then - BUILT_ON="$(head -1 "${REL_DIR}/BUILT_ON")" - ## failed to start, might be due to missing libs, try to be portable - export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH" - if ! check_erlang_start; then - ## it's hopeless - echoerr "FATAL: Unable to start Erlang." - echoerr "Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed." - echoerr "Also ensure it's running on the correct platform," - echoerr "this EMQX release is built for $BUILT_ON" - exit 1 - fi - echoerr "There seem to be missing dynamic libs from the OS." - echoerr "Using libs from ${DYNLIBS_DIR} instead." - echoerr "NOTE: EMQX's rpm or deb package installation is recommended!" -fi - -## backward compatible -if [ -d "$ERTS_DIR/lib" ]; then - export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" -fi - # cuttlefish try to read environment variables starting with "EMQX_" export CUTTLEFISH_ENV_OVERRIDE_PREFIX='EMQX_' @@ -261,6 +218,49 @@ if [ "$ES" -ne 0 ]; then exit $ES fi +# Echo to stderr on errors +echoerr() { echo "$*" 1>&2; } + +die() { + set +x + echoerr "ERROR: $1" + errno=${2:-1} + exit "$errno" +} + +assert_node_alive() { + if ! relx_nodetool "ping" > /dev/null; then + die "node_is_not_running!" 1 + fi +} + +check_erlang_start() { + # set ERL_CRASH_DUMP_BYTES to zero so it will not write a crash dump file + env ERL_CRASH_DUMP_BYTES=0 "$BINDIR/$PROGNAME" -boot "$REL_DIR/start_clean" -eval "crypto:start(),halt()" +} + +if ! check_erlang_start >/dev/null 2>&1; then + BUILT_ON="$(head -1 "${REL_DIR}/BUILT_ON")" + ## failed to start, might be due to missing libs, try to be portable + export LD_LIBRARY_PATH="$DYNLIBS_DIR:$LD_LIBRARY_PATH" + if ! check_erlang_start; then + ## it's hopeless + echoerr "FATAL: Unable to start Erlang." + echoerr "Please make sure openssl-1.1.1 (libcrypto) and libncurses are installed." + echoerr "Also ensure it's running on the correct platform," + echoerr "this EMQX release is built for $BUILT_ON" + exit 1 + fi + echoerr "There seem to be missing dynamic libs from the OS." + echoerr "Using libs from ${DYNLIBS_DIR} instead." + echoerr "NOTE: EMQX's rpm or deb package installation is recommended!" +fi + +## backward compatible (old EMQX versions does this) +if [ -d "$ERTS_DIR/lib" ]; then + export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" +fi + if [ -z "$WITH_EPMD" ]; then EPMD_ARG="-start_epmd false -epmd_module ekka_epmd -proto_dist ekka" else From 5a5d901968df57a78336461cbd2132c47035c51b Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Mon, 29 Aug 2022 11:14:41 +0200 Subject: [PATCH 2/8] docs: update CHANGES-4.3.md --- CHANGES-4.3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES-4.3.md b/CHANGES-4.3.md index 42148dc6a..a250de823 100644 --- a/CHANGES-4.3.md +++ b/CHANGES-4.3.md @@ -34,6 +34,7 @@ File format: - Fix ExHook can't be un-hooked if the grpc service stop first. [#8725](https://github.com/emqx/emqx/pull/8725) - Fix the problem that ExHook cannot continue hook chains execution for mismatched topics. [#8807](https://github.com/emqx/emqx/pull/8807) - Fix GET `/listeners/` crashes when listener is not ready. [#8752](https://github.com/emqx/emqx/pull/8752) +- Fix repeated warning messages in bin/emqx [#8824](https://github.com/emqx/emqx/pull/8824) ## v4.3.18 From 0803c7499909fe2da6320d08b2e11d4c88cbeec1 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 30 Aug 2022 15:03:21 +0800 Subject: [PATCH 3/8] chore: add emqx_ctl acl list to show all acls --- apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl index 44850d6a6..34f9777b9 100644 --- a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl +++ b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl @@ -119,6 +119,7 @@ cli(_) -> emqx_ctl:usage([ {"acl list clientid", "List clientid acls"} , {"acl list username", "List username acls"} , {"acl list _all", "List $all acls"} + , {"acl list ", "List all acls"} , {"acl show clientid ", "Lookup clientid acl detail"} , {"acl show username ", "Lookup username acl detail"} , {"acl aad clientid ", "Add clientid acl"} From 3867229b2d7dff71903273d9f2626390d7f81237 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 30 Aug 2022 15:04:00 +0800 Subject: [PATCH 4/8] chore: add emqx restart command tip --- bin/emqx | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/emqx b/bin/emqx index 66696052e..306efe527 100755 --- a/bin/emqx +++ b/bin/emqx @@ -159,6 +159,7 @@ usage() { echo " console: Start EMQX in an interactive Erlang shell" echo " foreground: Start EMQX in foreground mode without an interactive shell" echo " stop: Stop the running EMQX node" + echo " restart: Restart the running EMQX node" echo " ctl: Administration commands, execute '$REL_NAME ctl help' for more details" echo '' echo "More:" From e90303852174185303627eeee681a0585cc058fe Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 30 Aug 2022 15:07:45 +0800 Subject: [PATCH 5/8] chore: update mnesia_acl appup.src --- .../emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src index 8fa8384d4..7906449db 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src @@ -1,13 +1,15 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{<<"4\\.3\\.7">>, - [{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]}, + [{"4.3.7", + [{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[5-6]">>, [{load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_db,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[0-3]">>, [{load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, @@ -28,14 +30,18 @@ {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.7",[{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}]}, + [{"4.3.7", + [{load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[5-6]">>, [{load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_db,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[0-3]">>, [{load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, @@ -56,5 +62,6 @@ {load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia_db,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}]}. From 89db210b5cfaea43ec7680aad191208993990ede Mon Sep 17 00:00:00 2001 From: zhouzb Date: Tue, 30 Aug 2022 17:27:54 +0800 Subject: [PATCH 6/8] chore: bump vsn --- deploy/charts/emqx/Chart.yaml | 4 ++-- include/emqx_release.hrl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/charts/emqx/Chart.yaml b/deploy/charts/emqx/Chart.yaml index 0d00f8948..7667ab443 100644 --- a/deploy/charts/emqx/Chart.yaml +++ b/deploy/charts/emqx/Chart.yaml @@ -13,8 +13,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 4.3.18 +version: 4.3.19 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: 4.3.18 +appVersion: 4.3.19 diff --git a/include/emqx_release.hrl b/include/emqx_release.hrl index ed989ddc2..9e703b64b 100644 --- a/include/emqx_release.hrl +++ b/include/emqx_release.hrl @@ -29,7 +29,7 @@ -ifndef(EMQX_ENTERPRISE). --define(EMQX_RELEASE, {opensource, "4.3.19-beta.4"}). +-define(EMQX_RELEASE, {opensource, "4.3.19"}). -else. From 59c2bbe9adf5951cb87a9bec8f6c73783bd6ffe5 Mon Sep 17 00:00:00 2001 From: Rory Z Date: Tue, 30 Aug 2022 18:09:25 +0800 Subject: [PATCH 7/8] chore: use minikube instead k3s --- .github/workflows/run_fvt_tests.yaml | 32 +++++----------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/.github/workflows/run_fvt_tests.yaml b/.github/workflows/run_fvt_tests.yaml index 601ab304f..02d7caa3d 100644 --- a/.github/workflows/run_fvt_tests.yaml +++ b/.github/workflows/run_fvt_tests.yaml @@ -80,30 +80,18 @@ jobs: echo "TARGET=emqx/emqx" >> $GITHUB_ENV make emqx-docker fi - - name: install k3s - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" - run: | - sudo sh -c "echo \"127.0.0.1 $(hostname)\" >> /etc/hosts" - curl -sfL https://get.k3s.io | sh - - sudo chmod 644 /etc/rancher/k3s/k3s.yaml - kubectl cluster-info + - run: minikube start - name: install helm - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 sudo chmod 700 get_helm.sh sudo ./get_helm.sh helm version - name: run emqx on chart - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" timeout-minutes: 5 run: | version=$(./pkg-vsn.sh) - sudo docker save ${TARGET}:$version -o emqx.tar.gz - sudo k3s ctr image import emqx.tar.gz + minikube image load ${TARGET}:$version sed -i -r "s/^appVersion: .*$/appVersion: \"${version}\"/g" deploy/charts/emqx/Chart.yaml sed -i '/emqx_telemetry/d' deploy/charts/emqx/values.yaml @@ -128,22 +116,16 @@ jobs: done - name: get emqx-0 pods log if: failure() - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | kubectl describe pods emqx-0 kubectl logs emqx-0 - name: get emqx-1 pods log if: failure() - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | kubectl describe pods emqx-1 kubectl logs emqx-1 - name: get emqx-2 pods log if: failure() - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | kubectl describe pods emqx-2 kubectl logs emqx-2 @@ -157,16 +139,12 @@ jobs: pip install pytest echo "$HOME/.local/bin" >> $GITHUB_PATH - name: run paho test - env: - KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" run: | - emqx_svc=$(kubectl get svc --namespace default emqx -o jsonpath="{.spec.clusterIP}") - emqx1=$(kubectl get pods emqx-1 -o jsonpath='{.status.podIP}') - emqx2=$(kubectl get pods emqx-2 -o jsonpath='{.status.podIP}') + nohup kubectl port-forward svc emqx 1883:1883 & - pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic --host $emqx_svc + pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic RESULT=$? - pytest -v paho.mqtt.testing/interoperability/test_cluster --host1 $emqx1 --host2 $emqx2 + pytest -v paho.mqtt.testing/interoperability/test_cluster RESULT=$((RESULT + $?)) if [ 0 -ne $RESULT ]; then kubectl logs emqx-1 From 6c18a05b78442795f66be320aa47f3576ca9ee86 Mon Sep 17 00:00:00 2001 From: zhouzb Date: Tue, 30 Aug 2022 19:57:10 +0800 Subject: [PATCH 8/8] chore: fix run_fvt_tests workflow --- .github/workflows/run_fvt_tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_fvt_tests.yaml b/.github/workflows/run_fvt_tests.yaml index 02d7caa3d..dec677e9c 100644 --- a/.github/workflows/run_fvt_tests.yaml +++ b/.github/workflows/run_fvt_tests.yaml @@ -140,7 +140,7 @@ jobs: echo "$HOME/.local/bin" >> $GITHUB_PATH - name: run paho test run: | - nohup kubectl port-forward svc emqx 1883:1883 & + nohup kubectl port-forward svc/emqx 1883:1883 & pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic RESULT=$?