diff --git a/src/emqx_cm.erl b/src/emqx_cm.erl index 0f1c37fdb..b567ea8cc 100644 --- a/src/emqx_cm.erl +++ b/src/emqx_cm.erl @@ -148,13 +148,12 @@ unregister_channel(ClientId) when is_binary(ClientId) -> do_unregister_channel(Chan) -> ok = emqx_cm_registry:unregister_channel(Chan), true = ets:delete(?CHAN_CONN_TAB, Chan), - case ets:lookup(?CHAN_INFO_TAB, Chan) of + case ets:take(?CHAN_INFO_TAB, Chan) of [{_, #{conn_state := connected}, _}] -> decrement_connected_client_count(); _ -> - skip + ok end, - true = ets:delete(?CHAN_INFO_TAB, Chan), ets:delete_object(?CHAN_TAB, Chan). -spec(connection_closed(emqx_types:clientid()) -> true). @@ -440,7 +439,7 @@ rpc_call(Node, Fun, Args, Timeout) -> %% @private cast(Msg) -> gen_server:cast(?CM, Msg). -call(Msg) -> gen_server:call(?CM, Msg). +call(Msg) -> gen_server:call(?CM, Msg, infinity). %%-------------------------------------------------------------------- %% gen_server callbacks