fix: avoid uisng 'pid' as log data field

Since it clashes with log metad data field
This commit is contained in:
Zaiming (Stone) Shi 2023-03-26 10:22:04 +02:00
parent 3f67d25605
commit 19e136bb66
6 changed files with 21 additions and 17 deletions

View File

@ -465,23 +465,23 @@ request_stepdown(Action, ConnMod, Pid) ->
catch
% emqx_ws_connection: call
_:noproc ->
ok = ?tp(debug, "session_already_gone", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_gone", #{stale_pid => Pid, action => Action}),
{error, noproc};
% emqx_connection: gen_server:call
_:{noproc, _} ->
ok = ?tp(debug, "session_already_gone", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_gone", #{stale_pid => Pid, action => Action}),
{error, noproc};
_:{shutdown, _} ->
ok = ?tp(debug, "session_already_shutdown", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_shutdown", #{stale_pid => Pid, action => Action}),
{error, noproc};
_:{{shutdown, _}, _} ->
ok = ?tp(debug, "session_already_shutdown", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_shutdown", #{stale_pid => Pid, action => Action}),
{error, noproc};
_:{timeout, {gen_server, call, _}} ->
?tp(
warning,
"session_stepdown_request_timeout",
#{pid => Pid, action => Action, stale_channel => stale_channel_info(Pid)}
#{stale_pid => Pid, action => Action, stale_channel => stale_channel_info(Pid)}
),
ok = force_kill(Pid),
{error, timeout};
@ -490,7 +490,7 @@ request_stepdown(Action, ConnMod, Pid) ->
error,
"session_stepdown_request_exception",
#{
pid => Pid,
stale_pid => Pid,
action => Action,
reason => Error,
stacktrace => St,
@ -671,7 +671,7 @@ handle_cast(Msg, State) ->
{noreply, State}.
handle_info({'DOWN', _MRef, process, Pid, _Reason}, State = #{chan_pmon := PMon}) ->
?tp(emqx_cm_process_down, #{pid => Pid, reason => _Reason}),
?tp(emqx_cm_process_down, #{stale_pid => Pid, reason => _Reason}),
ChanPids = [Pid | emqx_misc:drain_down(?BATCH_SIZE)],
{Items, PMon1} = emqx_pmon:erase_all(ChanPids, PMon),
lists:foreach(fun mark_channel_disconnected/1, ChanPids),

View File

@ -587,24 +587,24 @@ request_stepdown(Action, ConnMod, Pid) ->
catch
% emqx_ws_connection: call
_:noproc ->
ok = ?tp(debug, "session_already_gone", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_gone", #{stale_pid => Pid, action => Action}),
{error, noproc};
% emqx_connection: gen_server:call
_:{noproc, _} ->
ok = ?tp(debug, "session_already_gone", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_gone", #{stale_pid => Pid, action => Action}),
{error, noproc};
_:Reason = {shutdown, _} ->
ok = ?tp(debug, "session_already_shutdown", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_shutdown", #{stale_pid => Pid, action => Action}),
{error, Reason};
_:Reason = {{shutdown, _}, _} ->
ok = ?tp(debug, "session_already_shutdown", #{pid => Pid, action => Action}),
ok = ?tp(debug, "session_already_shutdown", #{stale_pid => Pid, action => Action}),
{error, Reason};
_:{timeout, {gen_server, call, _}} ->
?tp(
warning,
"session_stepdown_request_timeout",
#{
pid => Pid,
stale_pid => Pid,
action => Action,
stale_channel => stale_channel_info(Pid)
}
@ -616,7 +616,7 @@ request_stepdown(Action, ConnMod, Pid) ->
error,
"session_stepdown_request_exception",
#{
pid => Pid,
stale_pid => Pid,
action => Action,
reason => Error,
stacktrace => St,

View File

@ -0,0 +1,2 @@
Fixed a log data field name clash.
Piror to this fix, some debug logs may report a wrong Erlang PID which may affect troubleshooting session takeover issues.

View File

@ -0,0 +1,2 @@
修复log数据字段名称冲突。
在这个修复之前一些调试日志可能会报告一个错误的Erlang PID这可能会影响会话接管问题的故障调查。

View File

@ -1,6 +1,6 @@
{application, emqx_license, [
{description, "EMQX License"},
{vsn, "5.0.7"},
{vsn, "5.0.8"},
{modules, []},
{registered, [emqx_license_sup]},
{applications, [kernel, stdlib, emqx_ctl]},

View File

@ -74,13 +74,13 @@ ensure_timer(#{interval := Interval} = State) ->
check_pid(#{name := Name, pid := OldPid, callback := Callback} = State) ->
case whereis(Name) of
undefined ->
?tp(debug, emqx_license_installer_noproc, #{pid => OldPid}),
?tp(debug, emqx_license_installer_noproc, #{old_pid => OldPid}),
State;
OldPid ->
?tp(debug, emqx_license_installer_nochange, #{pid => OldPid}),
?tp(debug, emqx_license_installer_nochange, #{old_pid => OldPid}),
State;
NewPid ->
_ = Callback(),
?tp(debug, emqx_license_installer_called, #{pid => OldPid}),
?tp(debug, emqx_license_installer_called, #{old_pid => OldPid}),
State#{pid => NewPid}
end.