commit
5b23ccc5b9
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -2,6 +2,20 @@
|
||||||
emqttd ChangeLog
|
emqttd ChangeLog
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
0.13.1-beta(2015-11-28)
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Bugfix: Plugin pathes error under windows (#387)
|
||||||
|
|
||||||
|
Improve: Too many error logs "[error] Session ..... Unexpected EXIT: client_pid=<0.14137.35>, exit_pid=<0.30829.22>, reason=nop..." (#383)
|
||||||
|
|
||||||
|
Improve: Define QOS0/1/2, Pooler Error (PR#382)
|
||||||
|
|
||||||
|
Improve: High CPU load when 400K unstable mobile connections (#377)
|
||||||
|
|
||||||
|
BugFix: emqttd_plugin_pgsql - error using same query with latest update plugin (pgsql#5)
|
||||||
|
|
||||||
|
|
||||||
0.13.0-beta(2015-11-08)
|
0.13.0-beta(2015-11-08)
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4c39043f8a9c64dd851ba0c2a434d725a08a261a
|
Subproject commit 956c38194113825784103af2bc7bfbc2a762f55d
|
|
@ -1,7 +1,7 @@
|
||||||
{application, emqttd,
|
{application, emqttd,
|
||||||
[
|
[
|
||||||
{id, "emqttd"},
|
{id, "emqttd"},
|
||||||
{vsn, "0.13.0"},
|
{vsn, "0.13.1"},
|
||||||
{description, "Erlang MQTT Broker"},
|
{description, "Erlang MQTT Broker"},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
|
|
|
@ -79,6 +79,9 @@
|
||||||
%% Client Pid bind with session
|
%% Client Pid bind with session
|
||||||
client_pid :: pid(),
|
client_pid :: pid(),
|
||||||
|
|
||||||
|
%% Old Client Pid that has been kickout
|
||||||
|
old_client_pid :: pid(),
|
||||||
|
|
||||||
%% Last packet id of the session
|
%% Last packet id of the session
|
||||||
packet_id = 1,
|
packet_id = 1,
|
||||||
|
|
||||||
|
@ -403,11 +406,12 @@ handle_cast({resume, ClientId, ClientPid}, Session = #session{client_id = C
|
||||||
%% Clear awaiting_comp timers
|
%% Clear awaiting_comp timers
|
||||||
[cancel_timer(TRef) || TRef <- maps:values(AwaitingComp)],
|
[cancel_timer(TRef) || TRef <- maps:values(AwaitingComp)],
|
||||||
|
|
||||||
Session1 = Session#session{client_pid = ClientPid,
|
Session1 = Session#session{client_pid = ClientPid,
|
||||||
clean_sess = false,
|
old_client_pid = OldClientPid,
|
||||||
awaiting_ack = #{},
|
clean_sess = false,
|
||||||
awaiting_comp = #{},
|
awaiting_ack = #{},
|
||||||
expired_timer = undefined},
|
awaiting_comp = #{},
|
||||||
|
expired_timer = undefined},
|
||||||
|
|
||||||
%% CleanSess: true -> false?
|
%% CleanSess: true -> false?
|
||||||
if
|
if
|
||||||
|
@ -561,6 +565,10 @@ handle_info({'EXIT', ClientPid, Reason}, Session = #session{clean_sess = fals
|
||||||
TRef = timer(Expires, expired),
|
TRef = timer(Expires, expired),
|
||||||
hibernate(Session#session{client_pid = undefined, expired_timer = TRef});
|
hibernate(Session#session{client_pid = undefined, expired_timer = TRef});
|
||||||
|
|
||||||
|
handle_info({'EXIT', Pid, _Reason}, Session = #session{old_client_pid = Pid}) ->
|
||||||
|
%%ignore
|
||||||
|
hibernate(Session);
|
||||||
|
|
||||||
handle_info({'EXIT', Pid, Reason}, Session = #session{client_pid = ClientPid}) ->
|
handle_info({'EXIT', Pid, Reason}, Session = #session{client_pid = ClientPid}) ->
|
||||||
|
|
||||||
?LOG(error, "Unexpected EXIT: client_pid=~p, exit_pid=~p, reason=~p",
|
?LOG(error, "Unexpected EXIT: client_pid=~p, exit_pid=~p, reason=~p",
|
||||||
|
@ -595,7 +603,8 @@ kick(_ClientId, Pid, Pid) ->
|
||||||
kick(ClientId, OldPid, Pid) ->
|
kick(ClientId, OldPid, Pid) ->
|
||||||
unlink(OldPid),
|
unlink(OldPid),
|
||||||
OldPid ! {shutdown, conflict, {ClientId, Pid}},
|
OldPid ! {shutdown, conflict, {ClientId, Pid}},
|
||||||
ok.
|
%% Clean noproc
|
||||||
|
receive {'EXIT', OldPid, _} -> ok after 0 -> ok end.
|
||||||
|
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
%% Check inflight and awaiting_rel
|
%% Check inflight and awaiting_rel
|
||||||
|
|
Loading…
Reference in New Issue