fix issue #282 - emqttd_sm optimized
This commit is contained in:
parent
f57e6b43db
commit
b59a8664eb
|
@ -246,8 +246,14 @@ resume_session(#mqtt_session{client_id = ClientId,
|
||||||
sess_pid = SessPid}, ClientPid)
|
sess_pid = SessPid}, ClientPid)
|
||||||
when node(SessPid) =:= node() ->
|
when node(SessPid) =:= node() ->
|
||||||
|
|
||||||
emqttd_session:resume(SessPid, ClientId, ClientPid),
|
case is_process_alive(SessPid) of
|
||||||
{ok, SessPid};
|
true ->
|
||||||
|
emqttd_session:resume(SessPid, ClientId, ClientPid),
|
||||||
|
{ok, SessPid};
|
||||||
|
false ->
|
||||||
|
lager:error("Session(~s): Cannot resume ~p, it seems already dead!", [ClientId, SessPid]),
|
||||||
|
{error, session_died}
|
||||||
|
end;
|
||||||
|
|
||||||
%% Remote node
|
%% Remote node
|
||||||
resume_session(Session = #mqtt_session{client_id = ClientId, sess_pid = SessPid}, ClientPid) ->
|
resume_session(Session = #mqtt_session{client_id = ClientId, sess_pid = SessPid}, ClientPid) ->
|
||||||
|
|
|
@ -69,14 +69,17 @@ handle_info({mnesia_system_event, {mnesia_down, Node}}, State) ->
|
||||||
lager:error("!!!Mnesia node down: ~s", [Node]),
|
lager:error("!!!Mnesia node down: ~s", [Node]),
|
||||||
Fun = fun() ->
|
Fun = fun() ->
|
||||||
ClientIds =
|
ClientIds =
|
||||||
mnesia:select(session, [{#mqtt_session{client_id = '$1', sess_pid = '$2'},
|
mnesia:select(session, [{#mqtt_session{client_id = '$1', sess_pid = '$2', _ = '_'},
|
||||||
[{'==', {node, '$2'}, Node}],
|
[{'==', {node, '$2'}, Node}],
|
||||||
['$1']}]),
|
['$1']}]),
|
||||||
lists:foreach(fun(ClientId) -> mnesia:delete({session, ClientId}) end, ClientIds)
|
lists:foreach(fun(ClientId) -> mnesia:delete({session, ClientId}) end, ClientIds)
|
||||||
end,
|
end,
|
||||||
mnesia:async_dirty(Fun),
|
mnesia:async_dirty(Fun),
|
||||||
{noreply, State};
|
{noreply, State};
|
||||||
|
|
||||||
|
handle_info({mnesia_system_event, {mnesia_up, _Node}}, State) ->
|
||||||
|
{noreply, State};
|
||||||
|
|
||||||
handle_info(tick, State) ->
|
handle_info(tick, State) ->
|
||||||
{noreply, setstats(State), hibernate};
|
{noreply, setstats(State), hibernate};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue