From 43207f86ea66fc9ac4cb1621357cc00d4a6593b2 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Wed, 29 Mar 2017 17:38:43 +0800 Subject: [PATCH 1/3] Use stop/2 to count the shutdown reasons --- src/emqttd_ws_client.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqttd_ws_client.erl b/src/emqttd_ws_client.erl index 8797088e0..0c97a5c49 100644 --- a/src/emqttd_ws_client.erl +++ b/src/emqttd_ws_client.erl @@ -228,7 +228,7 @@ handle_info({'EXIT', WsPid, Reason}, State = #wsclient_state{ws_pid = WsPid}) -> %% The session process exited unexpectedly. handle_info({'EXIT', Pid, Reason}, State = #wsclient_state{proto_state = ProtoState}) -> case emqttd_protocol:session(ProtoState) of - Pid -> shutdown(Reason, State); + Pid -> stop(Reason, State); _ -> ?WSLOG(error, "Unexpected EXIT: ~p, Reason: ~p", [Pid, Reason], State), {noreply, State, hibernate} end; From 9bfa46c88062b2c35ebdbd08fc685c07e8ca23a2 Mon Sep 17 00:00:00 2001 From: HuangDan Date: Wed, 29 Mar 2017 21:17:35 +0800 Subject: [PATCH 2/3] Add issues#963 case --- test/emqttd_SUITE.erl | 47 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/test/emqttd_SUITE.erl b/test/emqttd_SUITE.erl index be60926fb..b5402830d 100644 --- a/test/emqttd_SUITE.erl +++ b/test/emqttd_SUITE.erl @@ -103,12 +103,15 @@ groups() -> cli_subscriptions, cli_bridges, cli_plugins, - cli_listeners, + {listeners, [sequence], + [cli_listeners, + conflict_listeners + ]}, cli_vm]}, {cleanSession, [sequence], [cleanSession_validate, - cleanSession_validate1, - cleanSession_validate2]}]. + cleanSession_validate1 + ]}]. init_per_suite(Config) -> application:start(lager), @@ -619,6 +622,35 @@ cli_bridges(_) -> cli_listeners(_) -> emqttd_cli:listeners([]). +conflict_listeners(_) -> + F = + fun() -> + process_flag(trap_exit, true), + emqttc:start_link([{host, "localhost"}, + {port, 1883}, + {client_id, <<"c1">>}, + {clean_sess, false}]) + end, + spawn_link(F), + + {ok, C2} = emqttc:start_link([{host, "localhost"}, + {port, 1883}, + {client_id, <<"c1">>}, + {clean_sess, false}]), + timer:sleep(100), + + Listeners = + lists:map(fun({{Protocol, ListenOn}, Pid}) -> + Key = atom_to_list(Protocol) ++ ":" ++ esockd:to_string(ListenOn), + {Key, [{acceptors, esockd:get_acceptors(Pid)}, + {max_clients, esockd:get_max_clients(Pid)}, + {current_clients, esockd:get_current_clients(Pid)}, + {shutdown_count, esockd:get_shutdown_count(Pid)}]} + end, esockd:listeners()), + ?assertEqual(1, proplists:get_value(current_clients, proplists:get_value("mqtt:tcp:1883", Listeners))), + ?assertEqual([{conflict,1}], proplists:get_value(shutdown_count, proplists:get_value("mqtt:tcp:1883", Listeners))), + emqttc:disconnect(C2). + cli_vm(_) -> emqttd_cli:vm([]), emqttd_cli:vm(["ports"]). @@ -630,7 +662,6 @@ cleanSession_validate(_) -> {clean_sess, false}]), timer:sleep(10), emqttc:subscribe(C1, <<"topic">>, qos0), - ok = emqttd_cli:sessions(["list", "persistent"]), emqttc:disconnect(C1), {ok, Pub} = emqttc:start_link([{host, "localhost"}, {port, 1883}, @@ -639,12 +670,11 @@ cleanSession_validate(_) -> emqttc:publish(Pub, <<"topic">>, <<"m1">>, [{qos, 0}]), timer:sleep(10), {ok, C11} = emqttc:start_link([{host, "localhost"}, - {port, 1883}, - {client_id, <<"c1">>}, - {clean_sess, false}]), + {port, 1883}, + {client_id, <<"c1">>}, + {clean_sess, false}]), timer:sleep(100), Metrics = emqttd_metrics:all(), - ct:log("Metrics:~p~n", [Metrics]), ?assertEqual(1, proplists:get_value('messages/qos0/sent', Metrics)), ?assertEqual(1, proplists:get_value('messages/qos0/received', Metrics)), emqttc:disconnect(Pub), @@ -657,7 +687,6 @@ cleanSession_validate1(_) -> {clean_sess, true}]), timer:sleep(10), emqttc:subscribe(C1, <<"topic">>, qos1), - ok = emqttd_cli:sessions(["list", "transient"]), emqttc:disconnect(C1), {ok, Pub} = emqttc:start_link([{host, "localhost"}, {port, 1883}, From acedcbbfd4d9e2c710d20a7179bee42b6f3e90b9 Mon Sep 17 00:00:00 2001 From: turtled Date: Thu, 30 Mar 2017 11:49:19 +0800 Subject: [PATCH 3/3] syslog handlers emqttd --- priv/emq.schema | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/emq.schema b/priv/emq.schema index 697c6c7ae..7141a2d4a 100644 --- a/priv/emq.schema +++ b/priv/emq.schema @@ -179,7 +179,7 @@ end}. ]}. {mapping, "log.syslog.identity", "lager.handlers", [ - {default, "emq"}, + {default, "emqttd"}, {datatype, string} ]}.