From 5433af4c92da84f22a905c2cc32a1200a773153e Mon Sep 17 00:00:00 2001 From: turtled Date: Thu, 6 Jul 2017 14:49:17 +0800 Subject: [PATCH 1/4] Add reopen/close ctl command --- src/emqttd_cli.erl | 32 +++++++++++++++++++++++++++++++- src/emqttd_ctl.erl | 2 ++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/emqttd_cli.erl b/src/emqttd_cli.erl index 6ff94893c..2ebe43f13 100644 --- a/src/emqttd_cli.erl +++ b/src/emqttd_cli.erl @@ -477,8 +477,38 @@ listeners([]) -> end, Info) end, esockd:listeners()); +listeners(["reopen", Proto, ListenOn1]) -> + ListenOn = case string:tokens(ListenOn1, ":") of + [Port] -> list_to_integer(Port); + [IP, Port] -> {IP, list_to_integer(Port)} + end, + case emqttd_app:restart_listener({list_to_atom(Proto), ListenOn, []}) of + {ok, _Pid} -> + io:format("Reopen ~p listen on ~p successfully.~n", + [list_to_atom(Proto), list_to_atom(ListenOn1)]); + {error, Error} -> + io:format("Failed to reopen ~p listen on ~p, error:~p~n", + [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error]) + end; + +listeners(["close", Proto, ListenOn1]) -> + ListenOn = case string:tokens(ListenOn1, ":") of + [Port] -> list_to_integer(Port); + [IP, Port] -> {IP, list_to_integer(Port)} + end, + case emqttd_app:stop_listener({list_to_atom(Proto), ListenOn, []}) of + ok -> + io:format("Close ~p on ~p successfully.~n", + [list_to_atom(Proto), list_to_atom(ListenOn1)]); + {error, Error} -> + io:format("Failed to close ~p on ~p, error:~p~n", + [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error]) + end; + listeners(_) -> - ?PRINT_CMD("listeners", "List listeners"). + ?USAGE([{"listeners", "List listeners"}, + {"listeners reopen ", "Reopen a listener port"}, + {"listeners close ", "Close a listener port"}]). %%-------------------------------------------------------------------- %% Dump ETS diff --git a/src/emqttd_ctl.erl b/src/emqttd_ctl.erl index b309c5c6a..195d3dea0 100644 --- a/src/emqttd_ctl.erl +++ b/src/emqttd_ctl.erl @@ -75,6 +75,8 @@ run([CmdS|Args]) -> _ -> ok catch _:Reason -> + io:format("Reason:~p, get_stacktrace:~p~n", + [Reason, erlang:get_stacktrace()]), {error, Reason} end; [] -> From f9cf00804f973cd7124811b50695d153c061bec0 Mon Sep 17 00:00:00 2001 From: HuangDan Date: Thu, 6 Jul 2017 15:54:03 +0800 Subject: [PATCH 2/4] Add dialyze dependencies --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 5841ef611..20420cf73 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,11 @@ CT_OPTS = -cover test/ct.cover.spec -erl_args -name emqttd_ct@127.0.0.1 COVER = true +PLT_APPS = sasl asn1 ssl syntax_tools runtime_tools crypto xmerl os_mon inets public_key ssl lager compiler mnesia +DIALYZER_DIRS := ebin/ +DIALYZER_OPTS := --verbose --statistics -Werror_handling \ + -Wrace_conditions #-Wunmatched_returns + include erlang.mk app:: rebar.config From 7054d2c57590e610910d7bb1d3e093343149ffc6 Mon Sep 17 00:00:00 2001 From: turtled Date: Thu, 6 Jul 2017 16:05:02 +0800 Subject: [PATCH 3/4] Rename reopen -> restart --- src/emqttd_cli.erl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/emqttd_cli.erl b/src/emqttd_cli.erl index 2ebe43f13..e812875da 100644 --- a/src/emqttd_cli.erl +++ b/src/emqttd_cli.erl @@ -477,38 +477,38 @@ listeners([]) -> end, Info) end, esockd:listeners()); -listeners(["reopen", Proto, ListenOn1]) -> +listeners(["restart", Proto, ListenOn1]) -> ListenOn = case string:tokens(ListenOn1, ":") of [Port] -> list_to_integer(Port); [IP, Port] -> {IP, list_to_integer(Port)} end, case emqttd_app:restart_listener({list_to_atom(Proto), ListenOn, []}) of {ok, _Pid} -> - io:format("Reopen ~p listen on ~p successfully.~n", + io:format("Restart ~p listen on ~p successfully.~n", [list_to_atom(Proto), list_to_atom(ListenOn1)]); {error, Error} -> - io:format("Failed to reopen ~p listen on ~p, error:~p~n", + io:format("Failed to restart ~p listen on ~p, error:~p~n", [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error]) end; -listeners(["close", Proto, ListenOn1]) -> +listeners(["stop", Proto, ListenOn1]) -> ListenOn = case string:tokens(ListenOn1, ":") of [Port] -> list_to_integer(Port); [IP, Port] -> {IP, list_to_integer(Port)} end, case emqttd_app:stop_listener({list_to_atom(Proto), ListenOn, []}) of ok -> - io:format("Close ~p on ~p successfully.~n", + io:format("Stop ~p on ~p successfully.~n", [list_to_atom(Proto), list_to_atom(ListenOn1)]); {error, Error} -> - io:format("Failed to close ~p on ~p, error:~p~n", + io:format("Failed to stop ~p on ~p, error:~p~n", [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error]) end; listeners(_) -> - ?USAGE([{"listeners", "List listeners"}, - {"listeners reopen ", "Reopen a listener port"}, - {"listeners close ", "Close a listener port"}]). + ?USAGE([{"listeners", "List listeners"}, + {"listeners restart ", "Restart a listener port"}, + {"listeners stop ", "Stop a listener port"}]). %%-------------------------------------------------------------------- %% Dump ETS From 87d2a7ca85f8c3749693ac5b13019e222d156464 Mon Sep 17 00:00:00 2001 From: turtled Date: Thu, 6 Jul 2017 16:17:36 +0800 Subject: [PATCH 4/4] Review code --- src/emqttd_cli.erl | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/emqttd_cli.erl b/src/emqttd_cli.erl index e812875da..fe62b66d7 100644 --- a/src/emqttd_cli.erl +++ b/src/emqttd_cli.erl @@ -477,32 +477,32 @@ listeners([]) -> end, Info) end, esockd:listeners()); -listeners(["restart", Proto, ListenOn1]) -> - ListenOn = case string:tokens(ListenOn1, ":") of +listeners(["restart", Proto, ListenOn]) -> + ListenOn1 = case string:tokens(ListenOn, ":") of [Port] -> list_to_integer(Port); [IP, Port] -> {IP, list_to_integer(Port)} end, - case emqttd_app:restart_listener({list_to_atom(Proto), ListenOn, []}) of + case emqttd_app:restart_listener({list_to_atom(Proto), ListenOn1, []}) of {ok, _Pid} -> - io:format("Restart ~p listen on ~p successfully.~n", - [list_to_atom(Proto), list_to_atom(ListenOn1)]); + io:format("Restart ~s listen on ~s successfully.~n", + [list_to_atom(Proto), list_to_atom(ListenOn)]); {error, Error} -> - io:format("Failed to restart ~p listen on ~p, error:~p~n", - [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error]) + io:format("Failed to restart ~s listen on ~s, error:~p~n", + [list_to_atom(Proto), list_to_atom(ListenOn) ,Error]) end; -listeners(["stop", Proto, ListenOn1]) -> - ListenOn = case string:tokens(ListenOn1, ":") of +listeners(["stop", Proto, ListenOn]) -> + ListenOn1 = case string:tokens(ListenOn, ":") of [Port] -> list_to_integer(Port); [IP, Port] -> {IP, list_to_integer(Port)} end, - case emqttd_app:stop_listener({list_to_atom(Proto), ListenOn, []}) of + case emqttd_app:stop_listener({list_to_atom(Proto), ListenOn1, []}) of ok -> - io:format("Stop ~p on ~p successfully.~n", - [list_to_atom(Proto), list_to_atom(ListenOn1)]); + io:format("Stop ~s on ~s successfully.~n", + [list_to_atom(Proto), list_to_atom(ListenOn)]); {error, Error} -> - io:format("Failed to stop ~p on ~p, error:~p~n", - [list_to_atom(Proto), list_to_atom(ListenOn1) ,Error]) + io:format("Failed to stop ~s on ~s, error:~p~n", + [list_to_atom(Proto), list_to_atom(ListenOn) ,Error]) end; listeners(_) ->