diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index eca5b3e56..8cc56e440 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -256,11 +256,16 @@ lookup_client(Node, {username, Username}, {M,F}) when Node =:= node() -> lookup_client(Node, {username, Username}, FormatFun) -> rpc_call(Node, lookup_client, [Node, {username, Username}, FormatFun]). -kickout_client(ClientId) -> - Results = [kickout_client(Node, ClientId) || Node <- mria_mnesia:running_nodes()], - case lists:any(fun(Item) -> Item =:= ok end, Results) of - true -> ok; - false -> lists:last(Results) +kickout_client({ClientID, FormatFun}) -> + case lookup_client({clientid, ClientID}, FormatFun) of + [] -> + {error, not_found}; + _ -> + Results = [kickout_client(Node, ClientID) || Node <- mria_mnesia:running_nodes()], + case lists:any(fun(Item) -> Item =:= ok end, Results) of + true -> ok; + false -> lists:last(Results) + end end. kickout_client(Node, ClientId) when Node =:= node() -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index db7704a4c..d95ab7e91 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -505,8 +505,12 @@ lookup(#{clientid := ClientID}) -> end. kickout(#{clientid := ClientID}) -> - emqx_mgmt:kickout_client(ClientID), - {204}. + case emqx_mgmt:kickout_client({ClientID, ?FORMAT_FUN}) of + {error, not_found} -> + {404, ?CLIENT_ID_NOT_FOUND}; + _ -> + {204} + end. get_authz_cache(#{clientid := ClientID})-> case emqx_mgmt:list_authz_cache(ClientID) of