Merge pull request #10015 from zmstone/0220-faile-fast-if-cookie-is-obviously-wrong

0220 fail fast if cookie is obviously wrong
This commit is contained in:
Zaiming (Stone) Shi 2023-02-24 19:54:35 +01:00 committed by GitHub
commit 80afb69bb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 4 deletions

View File

@ -149,7 +149,7 @@ help() ->
[] ->
print("No commands available.~n");
Cmds ->
print("Usage: ~ts~n", [?MODULE]),
print("Usage: ~ts~n", ["emqx ctl"]),
lists:foreach(
fun({_, {Mod, Cmd}, _}) ->
print("~110..-s~n", [""]),

View File

@ -545,8 +545,12 @@ else
logerr "Make sure environment variable EMQX_NODE__NAME is set to indicate for which node this command is intended."
exit 1
fi
else
if [ -n "${EMQX_NODE__NAME:-}" ]; then
die "Node $EMQX_NODE__NAME is not running?"
fi
fi
## We have no choiece but to read the bootstrap config (with environment overrides available in the current shell)
## We have no choice but to read the bootstrap config (with environment overrides available in the current shell)
[ -f "$EMQX_ETC_DIR"/emqx.conf ] || die "emqx.conf is not found in $EMQX_ETC_DIR" 1
maybe_use_portable_dynlibs
EMQX_BOOT_CONFIGS="$(call_hocon -s "$SCHEMA_MOD" -c "$EMQX_ETC_DIR"/emqx.conf multi_get "${CONF_KEYS[@]}")"
@ -940,9 +944,11 @@ if [ -n "${EMQX_NODE_COOKIE:-}" ]; then
unset EMQX_NODE_COOKIE
fi
COOKIE="${EMQX_NODE__COOKIE:-}"
if [ -z "$COOKIE" ]; then
COOKIE="$(get_boot_config 'node.cookie')"
COOKIE_IN_USE="$(get_boot_config 'node.cookie')"
if [ -n "$COOKIE_IN_USE" ] && [ -n "$COOKIE" ] && [ "$COOKIE" != "$COOKIE_IN_USE" ]; then
die "EMQX_NODE__COOKIE is different from the cookie used by $NAME"
fi
[ -z "$COOKIE" ] && COOKIE="$COOKIE_IN_USE"
[ -z "$COOKIE" ] && COOKIE="$EMQX_DEFAULT_ERLANG_COOKIE"
maybe_warn_default_cookie() {

View File

@ -0,0 +1,7 @@
To prevent errors caused by an incorrect EMQX node cookie provided from an environment variable,
we have implemented a fail-fast mechanism.
Previously, when an incorrect cookie was provided, the command would still attempt to ping the node,
leading to the error message 'Node xxx not responding to pings'.
With the new implementation, if a mismatched cookie is detected,
a message will be logged to indicate that the cookie is incorrect,
and the command will terminate with an error code of 1 without trying to ping the node.

View File

@ -0,0 +1,4 @@
在 cookie 给错时,快速失败。
在此修复前,即使 cookie 配置错误emqx 命令仍然会尝试去 ping EMQX 节点,
并得到一个 "Node xxx not responding to pings" 的错误。
修复后,如果发现 cookie 不一致,立即打印不一致的错误信息并退出。