diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 95303a1e6..1ea88e9e5 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -691,10 +691,21 @@ delete_banned(Who) -> %%-------------------------------------------------------------------- lookup_running_client(ClientId, FormatFun) -> - lists:append([ - lookup_client(Node, {clientid, ClientId}, FormatFun) - || Node <- emqx:running_nodes() - ]). + case emqx_cm_registry:is_enabled() of + false -> + lists:append([ + lookup_client(Node, {clientid, ClientId}, FormatFun) + || Node <- emqx:running_nodes() + ]); + true -> + case emqx_cm_registry:lookup_channels(ClientId) of + [ChanPid | _] -> + Node = node(ChanPid), + lookup_client(Node, {clientid, ClientId}, FormatFun); + [] -> + [] + end + end. %%-------------------------------------------------------------------- %% Internal Functions. diff --git a/apps/emqx_management/test/emqx_mgmt_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_SUITE.erl index e5de64b5a..3d7924f35 100644 --- a/apps/emqx_management/test/emqx_mgmt_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_SUITE.erl @@ -180,9 +180,14 @@ t_lookup_client(_Config) -> ), ?assertEqual([], emqx_mgmt:lookup_client({clientid, <<"notfound">>}, ?FORMATFUN)), meck:expect(emqx, running_nodes, 0, [node(), 'fake@nonode']), - ?assertMatch( - [_ | {error, nodedown}], emqx_mgmt:lookup_client({clientid, <<"client1">>}, ?FORMATFUN) - ). + try + emqx:update_config([broker, enable_session_registry], false), + ?assertMatch( + [_ | {error, nodedown}], emqx_mgmt:lookup_client({clientid, <<"client1">>}, ?FORMATFUN) + ) + after + emqx:update_config([broker, enable_session_registry], true) + end. t_kickout_client(init, Config) -> process_flag(trap_exit, true),