From 8cd1fa41b664b887f65095026ae24e96937e648f Mon Sep 17 00:00:00 2001 From: JianBo He Date: Tue, 13 Jul 2021 10:27:11 +0800 Subject: [PATCH] fix(mgmt): fix dump aborted by print function crash --- apps/emqx_management/src/emqx_mgmt_cli.erl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/emqx_management/src/emqx_mgmt_cli.erl b/apps/emqx_management/src/emqx_mgmt_cli.erl index 77fe96182..db5dd47d0 100644 --- a/apps/emqx_management/src/emqx_mgmt_cli.erl +++ b/apps/emqx_management/src/emqx_mgmt_cli.erl @@ -616,8 +616,18 @@ dump(_Table, _, '$end_of_table', Result) -> lists:reverse(Result); dump(Table, Tag, Key, Result) -> - PrintValue = [print({Tag, Record}) || Record <- ets:lookup(Table, Key)], - dump(Table, Tag, ets:next(Table, Key), [PrintValue | Result]). + Ls = lists:foldl(fun(Record, Acc) -> + try + [print({Tag, Record}) | Acc] + catch + Class : Reason : Stk -> + logger:error("Failed to print ~p, error: {~p, ~p}. " + "Stacktrace: ~0p", + [Record, Class, Reason, Stk]), + Acc + end + end, [], ets:lookup(Table, Key)), + dump(Table, Tag, ets:next(Table, Key), [lists:reverse(Ls) | Result]). print({_, []}) -> ok; @@ -634,7 +644,7 @@ print({client, {ClientId, ChanPid}}) -> ClientInfo = maps:get(clientinfo, Attrs, #{}), ConnInfo = maps:get(conninfo, Attrs, #{}), Session = maps:get(session, Attrs, #{}), - Connected = case maps:get(conn_state, Attrs) of + Connected = case maps:get(conn_state, Attrs, undefined) of connected -> true; _ -> false end,