fix(ets_model): use only ChanPid as key to save memory
This commit is contained in:
parent
0955122468
commit
6d37d2df68
|
@ -1536,9 +1536,8 @@ ensure_connected(Channel = #channel{conninfo = ConnInfo,
|
|||
clientinfo = ClientInfo}) ->
|
||||
NConnInfo = ConnInfo#{connected_at => erlang:system_time(millisecond)},
|
||||
ok = run_hooks('client.connected', [ClientInfo, NConnInfo]),
|
||||
ClientID = info(clientid, Channel),
|
||||
Chan = {ClientID, self()},
|
||||
emqx_cm:increment_connected_client_count(Chan),
|
||||
ChanPid = self(),
|
||||
emqx_cm:increment_connected_client_count(ChanPid),
|
||||
Channel#channel{conninfo = NConnInfo,
|
||||
conn_state = connected
|
||||
}.
|
||||
|
@ -1627,9 +1626,8 @@ ensure_disconnected(Reason, Channel = #channel{conninfo = ConnInfo,
|
|||
clientinfo = ClientInfo}) ->
|
||||
NConnInfo = ConnInfo#{disconnected_at => erlang:system_time(millisecond)},
|
||||
ok = run_hooks('client.disconnected', [ClientInfo, Reason, NConnInfo]),
|
||||
ClientID = info(clientid, Channel),
|
||||
Chan = {ClientID, self()},
|
||||
emqx_cm:decrement_connected_client_count(Chan),
|
||||
ChanPid = self(),
|
||||
emqx_cm:decrement_connected_client_count(ChanPid),
|
||||
Channel#channel{conninfo = NConnInfo, conn_state = disconnected}.
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
|
|
|
@ -470,7 +470,7 @@ handle_info({'DOWN', _MRef, process, Pid, _Reason}, State = #{chan_pmon := PMon}
|
|||
Chan = {ClientID, ChanPid},
|
||||
case ets:lookup(?CHAN_INFO_TAB, Chan) of
|
||||
[{Chan, #{conn_state := connected}, _}] ->
|
||||
decrement_connected_client_count(Chan);
|
||||
decrement_connected_client_count(ChanPid);
|
||||
_ ->
|
||||
ok
|
||||
end
|
||||
|
@ -513,14 +513,14 @@ get_chann_conn_mod(ClientId, ChanPid) when node(ChanPid) == node() ->
|
|||
get_chann_conn_mod(ClientId, ChanPid) ->
|
||||
rpc_call(node(ChanPid), get_chann_conn_mod, [ClientId, ChanPid], ?T_GET_INFO).
|
||||
|
||||
increment_connected_client_count(Chan) ->
|
||||
increment_connected_client_count(ChanPid) ->
|
||||
?tp(emqx_cm_connected_client_count_inc, #{}),
|
||||
ets:insert_new(?CONN_CLIENT_TAB, {Chan, true}),
|
||||
ets:insert_new(?CONN_CLIENT_TAB, {ChanPid, true}),
|
||||
ok.
|
||||
|
||||
decrement_connected_client_count(Chan) ->
|
||||
decrement_connected_client_count(ChanPid) ->
|
||||
?tp(emqx_cm_connected_client_count_dec, #{}),
|
||||
ets:delete(?CONN_CLIENT_TAB, Chan),
|
||||
ets:delete(?CONN_CLIENT_TAB, ChanPid),
|
||||
ok.
|
||||
|
||||
get_connected_client_count() ->
|
||||
|
|
|
@ -502,11 +502,11 @@ t_connect_client_never_negative({init, Config}) ->
|
|||
t_connect_client_never_negative(Config) when is_list(Config) ->
|
||||
?assertEqual(0, emqx_cm:get_connected_client_count()),
|
||||
%% would go to -1
|
||||
Chan = {<<"clientid">>, list_to_pid("<0.0.1>")},
|
||||
emqx_cm:decrement_connected_client_count(Chan),
|
||||
ChanPid = list_to_pid("<0.0.1>"),
|
||||
emqx_cm:decrement_connected_client_count(ChanPid),
|
||||
?assertEqual(0, emqx_cm:get_connected_client_count()),
|
||||
%% would be 0, if really went to -1
|
||||
emqx_cm:increment_connected_client_count(Chan),
|
||||
emqx_cm:increment_connected_client_count(ChanPid),
|
||||
?assertEqual(1, emqx_cm:get_connected_client_count()),
|
||||
ok;
|
||||
t_connect_client_never_negative({'end', _Config}) ->
|
||||
|
|
Loading…
Reference in New Issue