From 49bf7a7db19c2c78e485f02229946118e27f1955 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 16 May 2023 13:49:34 +0800 Subject: [PATCH 1/4] chore: improve some logs in emqx_connection --- src/emqx_connection.erl | 7 ++----- src/emqx_ws_connection.erl | 6 +++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/emqx_connection.erl b/src/emqx_connection.erl index 35ae98331..ac9d40ac1 100644 --- a/src/emqx_connection.erl +++ b/src/emqx_connection.erl @@ -654,13 +654,10 @@ parse_incoming(Data, Packets, State = #state{parse_state = ParseState}) -> parse_incoming(Rest, [Packet | Packets], NState) catch error:proxy_protocol_config_disabled:_Stk -> - ?LOG(error, - "~nMalformed packet, " - "please check proxy_protocol config for specific listeners and zones~n"), + ?LOG(error, "Received proxy protocol header but the 'proxy_protocol' config is disabled"), {[{frame_error, proxy_protocol_config_disabled} | Packets], State}; error:Reason:Stk -> - ?LOG(error, "~nParse failed for ~0p~n~0p~nFrame data:~0p", - [Reason, Stk, Data]), + ?LOG(error, "Parse failed for ~0p, ~0p, Frame data: ~0p", [Reason, Stk, Data]), {[{frame_error, Reason} | Packets], State} end. diff --git a/src/emqx_ws_connection.erl b/src/emqx_ws_connection.erl index 1597c9b71..c94f58b24 100644 --- a/src/emqx_ws_connection.erl +++ b/src/emqx_ws_connection.erl @@ -201,7 +201,7 @@ init(Req, Opts) -> case check_origin_header(Req, Opts) of {error, Message} -> - ?LOG(error, "Invalid Origin Header ~p~n", [Message]), + ?LOG(error, "Invalid Origin Header ~p", [Message]), {ok, cowboy_req:reply(403, Req), WsOpts}; ok -> parse_sec_websocket_protocol(Req, Opts, WsOpts) end. @@ -408,7 +408,7 @@ websocket_info(Info, State) -> websocket_close({_, ReasonCode, _Payload}, State) when is_integer(ReasonCode) -> websocket_close(ReasonCode, State); websocket_close(Reason, State) -> - ?LOG(debug, "Websocket closed due to ~p~n", [Reason]), + ?LOG(debug, "Websocket closed due to ~p", [Reason]), handle_info({sock_closed, Reason}, State). terminate(Reason, _Req, #state{channel = Channel}) -> @@ -554,7 +554,7 @@ parse_incoming(Data, State = #state{parse_state = ParseState}) -> parse_incoming(Rest, postpone({incoming, Packet}, NState)) catch error:Reason:Stk -> - ?LOG(error, "~nParse failed for ~0p~n~0p~nFrame data: ~0p", + ?LOG(error, "Parse failed for ~0p, ~0p, Frame data: ~0p", [Reason, Stk, Data]), FrameError = {frame_error, Reason}, postpone({incoming, FrameError}, State) From c3164aa9178fc519e5ee39e2af5baf52772b13e8 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 16 May 2023 13:54:10 +0800 Subject: [PATCH 2/4] chore: update ehttpc to 0.4.8 --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index 839fdc3bb..b51d94da5 100644 --- a/rebar.config +++ b/rebar.config @@ -42,7 +42,7 @@ , {base16, {git, "https://github.com/zmstone/base16", {tag, "1.0.0"}}} , {redbug, "2.0.7"} , {covertool, {git, "https://github.com/zmstone/covertool", {tag, "2.0.4.1"}}} - , {ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.4.4"}}} + , {ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.4.8"}}} , {gun, {git, "https://github.com/emqx/gun", {tag, "1.3.8"}}} , {eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.7.4"}}} , {gproc, {git, "https://github.com/emqx/gproc", {tag, "0.9.0.1"}}} From 6933839858d293936e6b38c72c2d07555c8f578e Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 16 May 2023 13:50:50 +0800 Subject: [PATCH 3/4] chore: improve the open_session procedure --- src/emqx.appup.src | 130 +++++++++++++++++++++++++++++------------ src/emqx_cm.erl | 7 ++- src/emqx_cm_locker.erl | 6 +- 3 files changed, 103 insertions(+), 40 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index fdf2d4aa0..dc12048a8 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -2,20 +2,29 @@ %% Unless you know what you are doing, DO NOT edit manually!! {VSN, [{"4.4.18", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.17", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_plugins,brutal_purge,soft_purge,[]}]}, {"4.4.16", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -25,7 +34,10 @@ {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.15", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -37,7 +49,8 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.14", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -56,7 +69,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}]}, {"4.4.13", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -76,7 +90,8 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.12", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -96,7 +111,8 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.11", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, @@ -118,7 +134,8 @@ {load_module,emqx_session,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}]}, {"4.4.10", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -148,7 +165,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.9", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -183,7 +201,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.8", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -219,7 +238,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.7", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -255,7 +275,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.6", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -291,7 +312,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.5", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -329,7 +351,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.4", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -373,7 +396,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.3", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -423,7 +447,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.2", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -474,7 +499,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.1", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -529,7 +555,8 @@ {apply,{application,set_env, [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {"4.4.0", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {add_module,emqx_const_v2}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -587,18 +614,27 @@ [gen_rpc,insecure_auth_fallback_allowed,true]}}]}, {<<".*">>,[]}], [{"4.4.18", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.17", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_plugins,brutal_purge,soft_purge,[]}]}, {"4.4.16", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, @@ -607,7 +643,10 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.15", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, @@ -618,7 +657,8 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.14", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, @@ -636,7 +676,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}]}, {"4.4.13", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, @@ -655,7 +696,8 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.12", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, @@ -674,7 +716,8 @@ {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.11", - [{load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -695,7 +738,8 @@ {load_module,emqx_session,brutal_purge,soft_purge,[]}, {delete_module,emqx_cover}]}, {"4.4.10", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -721,7 +765,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.9", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -751,7 +796,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.8", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -782,7 +828,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.7", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -813,7 +860,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.6", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -844,7 +892,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.5", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -877,7 +926,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.4", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -916,7 +966,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.3", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -960,7 +1011,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.2", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -1005,7 +1057,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.1", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, @@ -1054,7 +1107,8 @@ {delete_module,emqx_crl_cache}, {delete_module,emqx_ocsp_cache}]}, {"4.4.0", - [{load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, + [{load_module,emqx_cm_locker,brutal_purge,soft_purge,[]}, + {load_module,emqx_tls_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, diff --git a/src/emqx_cm.erl b/src/emqx_cm.erl index 1c14fec43..189c26079 100644 --- a/src/emqx_cm.erl +++ b/src/emqx_cm.erl @@ -142,11 +142,14 @@ insert_channel_info(ClientId, Info, Stats) -> %% Note that: It should be called on a lock transaction register_channel(ClientId, ChanPid, #{conn_mod := ConnMod}) when is_pid(ChanPid) -> Chan = {ClientId, ChanPid}, + %% Note that cast/1 should be called before ets:insert/2 to reduce the possibility + %% of leakage in ETS tables due to the process dies before being monitored. + cast({registered, Chan}), true = ets:insert(?CHAN_TAB, Chan), true = ets:insert(?CHAN_CONN_TAB, {Chan, ConnMod}), ok = emqx_cm_registry:register_channel(Chan), mark_channel_connected(ChanPid), - cast({registered, Chan}). + ok. %% @doc Unregister a channel. -spec(unregister_channel(emqx_types:clientid()) -> ok). @@ -380,6 +383,8 @@ force_kill(Pid) -> exit(Pid, kill), ok. +stale_channel_info(Pid) when node(Pid) =/= node() -> + non_local_proc_info; stale_channel_info(Pid) -> process_info(Pid, [status, message_queue_len, current_stacktrace]). diff --git a/src/emqx_cm_locker.erl b/src/emqx_cm_locker.erl index ad17aab06..ddbdd91d9 100644 --- a/src/emqx_cm_locker.erl +++ b/src/emqx_cm_locker.erl @@ -33,9 +33,13 @@ -export([strategy/0]). -endif. +%% The takeover timeout (T_TAKEOVER) in emqx_cm is 15s, we should use a sufficent expiration +%% time to avoid being killed by the ekka_locker before completing the entire takeover task. +-define(EXPIRY_TIMEOUT, 60_000). + -spec(start_link() -> startlink_ret()). start_link() -> - ekka_locker:start_link(?MODULE). + ekka_locker:start_link(?MODULE, ?EXPIRY_TIMEOUT). -spec(trans(emqx_types:clientid(), fun(([node()]) -> any())) -> any()). trans(ClientId, Fun) -> From fd0083d836969ea2ab8c30ccd54272a5915303d5 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Wed, 17 May 2023 21:17:58 +0800 Subject: [PATCH 4/4] chore: update ehttpc to 0.4.9 --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index b51d94da5..31b06bb0f 100644 --- a/rebar.config +++ b/rebar.config @@ -42,7 +42,7 @@ , {base16, {git, "https://github.com/zmstone/base16", {tag, "1.0.0"}}} , {redbug, "2.0.7"} , {covertool, {git, "https://github.com/zmstone/covertool", {tag, "2.0.4.1"}}} - , {ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.4.8"}}} + , {ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.4.9"}}} , {gun, {git, "https://github.com/emqx/gun", {tag, "1.3.8"}}} , {eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.7.4"}}} , {gproc, {git, "https://github.com/emqx/gproc", {tag, "0.9.0.1"}}}