From da8b424ff23c8a23eefbaf340d53db78ef4f1d8d Mon Sep 17 00:00:00 2001 From: k32 <10274441+k32@users.noreply.github.com> Date: Wed, 19 Jan 2022 11:55:48 +0100 Subject: [PATCH] fix(emqx_mgmt): Fix formatting of client stats Fixes: #6798 --- apps/emqx_management/src/emqx_mgmt.erl | 7 +++++-- apps/emqx_management/src/emqx_mgmt_api_clients.erl | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 2bf92a3c7..b58767039 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -235,7 +235,6 @@ nodes_info_count(PropList) -> %%-------------------------------------------------------------------- lookup_client({clientid, ClientId}, FormatFun) -> - lists:append([lookup_client(Node, {clientid, ClientId}, FormatFun) || Node <- mria_mnesia:running_nodes()]); @@ -246,7 +245,11 @@ lookup_client({username, Username}, FormatFun) -> lookup_client(Node, Key, {M, F}) -> case wrap_rpc(emqx_broker_proto_v1:lookup_client(Node, Key)) of {error, Err} -> {error, Err}; - L -> lists:map(fun M:F/1, L) + L -> lists:map(fun({Chan, Info0, Stats}) -> + Info = Info0#{node => Node}, + M:F({Chan, Info, Stats}) + end, + L) end. kickout_client({ClientID, FormatFun}) -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index 62292c362..58ac3b814 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -708,13 +708,17 @@ run_fuzzy_filter(E = {_, #{clientinfo := ClientInfo}, _}, [{Key, like, SubStr} | %% format funcs format_channel_info({_, ClientInfo, ClientStats}) -> + Node = case ClientInfo of + #{node := N} -> N; + _ -> node() + end, StatsMap = maps:without([memory, next_pkt_id, total_heap_size], maps:from_list(ClientStats)), ClientInfoMap0 = maps:fold(fun take_maps_from_inner/3, #{}, ClientInfo), {IpAddress, Port} = peername_dispart(maps:get(peername, ClientInfoMap0)), Connected = maps:get(conn_state, ClientInfoMap0) =:= connected, ClientInfoMap1 = maps:merge(StatsMap, ClientInfoMap0), - ClientInfoMap2 = maps:put(node, node(), ClientInfoMap1), + ClientInfoMap2 = maps:put(node, Node, ClientInfoMap1), ClientInfoMap3 = maps:put(ip_address, IpAddress, ClientInfoMap2), ClientInfoMap4 = maps:put(port, Port, ClientInfoMap3), ClientInfoMap = maps:put(connected, Connected, ClientInfoMap4), @@ -777,4 +781,3 @@ format_authz_cache({{PubSub, Topic}, {AuthzResult, Timestamp}}) -> result => AuthzResult, updated_time => Timestamp }. -