From c0bb20c2d921f23b24cb953bca5dc00101d92b5e Mon Sep 17 00:00:00 2001 From: HuangDan Date: Mon, 12 Jun 2017 22:52:23 +0800 Subject: [PATCH 1/5] Remove bridge command qos option --- src/emqttd_cli.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqttd_cli.erl b/src/emqttd_cli.erl index 6918c68e8..6ff94893c 100644 --- a/src/emqttd_cli.erl +++ b/src/emqttd_cli.erl @@ -330,7 +330,7 @@ bridges(["options"]) -> ?PRINT_MSG(" suffix = string~n"), ?PRINT_MSG(" queue = integer~n"), ?PRINT_MSG("Example:~n"), - ?PRINT_MSG(" qos=2,prefix=abc/,suffix=/yxz,queue=1000~n"); + ?PRINT_MSG(" prefix=abc/,suffix=/yxz,queue=1000~n"); bridges(["start", SNode, Topic]) -> case emqttd_bridge_sup_sup:start_bridge(list_to_atom(SNode), list_to_binary(Topic)) of From a5cac277c140bc2dde5a1edb5127fa9c8d6979b1 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Tue, 13 Jun 2017 10:33:56 +0800 Subject: [PATCH 2/5] Add cluster_nodes/1 function --- src/emqttd_mnesia.erl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/emqttd_mnesia.erl b/src/emqttd_mnesia.erl index 31fa88d3a..d8e0f88af 100644 --- a/src/emqttd_mnesia.erl +++ b/src/emqttd_mnesia.erl @@ -27,7 +27,7 @@ %% Cluster mnesia -export([join_cluster/1, cluster_status/0, leave_cluster/0, - remove_from_cluster/1, running_nodes/0]). + remove_from_cluster/1, cluster_nodes/1, running_nodes/0]). %% Schema and tables -export([copy_schema/1, delete_schema/0, del_schema_copy/1, @@ -213,10 +213,18 @@ connect(Node) -> Error -> Error end. -%% @doc Running nodes +%% @doc Running nodes. -spec(running_nodes() -> list(node())). -running_nodes() -> - mnesia:system_info(running_db_nodes). +running_nodes() -> cluster_nodes(running). + +%% @doc Cluster nodes. +-spec(cluster_nodes(all | running | stopped) -> [node()]). +cluster_nodes(all) -> + mnesia:system_info(db_nodes); +cluster_nodes(running) -> + mnesia:system_info(running_db_nodes); +cluster_nodes(stopped) -> + cluster_nodes(all) -- cluster_nodes(running). %% @private ensure_ok(ok) -> ok; From 79c2fa631e6e7cd4e3ff8cdcb3f9c9b3b1dbcbcf Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Tue, 13 Jun 2017 10:35:22 +0800 Subject: [PATCH 3/5] Fix the issue that we cannot remove a down node from the cluster --- src/emqttd_cluster.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqttd_cluster.erl b/src/emqttd_cluster.erl index ab40875aa..28b2d1723 100644 --- a/src/emqttd_cluster.erl +++ b/src/emqttd_cluster.erl @@ -50,7 +50,7 @@ prepare() -> %% @doc Is node in cluster? -spec(is_clustered(node()) -> boolean()). is_clustered(Node) -> - lists:member(Node, emqttd_mnesia:running_nodes()). + lists:member(Node, emqttd_mnesia:cluster_nodes(all)). %% @doc Reboot after join or leave cluster. -spec(reboot() -> ok). From f18051c34029a3987a227532884ac8aa8ad4198e Mon Sep 17 00:00:00 2001 From: turtled Date: Tue, 13 Jun 2017 11:06:35 +0800 Subject: [PATCH 4/5] Add stop api listener function --- src/emqttd_app.erl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/emqttd_app.erl b/src/emqttd_app.erl index 272ccffc9..76506ee7c 100644 --- a/src/emqttd_app.erl +++ b/src/emqttd_app.erl @@ -200,7 +200,9 @@ stop_listener({Proto, ListenOn, _Opts}) when Proto == http; Proto == ws -> mochiweb:stop_http('mqtt:ws', ListenOn); stop_listener({Proto, ListenOn, _Opts}) when Proto == https; Proto == wss -> mochiweb:stop_http('mqtt:wss', ListenOn); -stop_listener({Proto, ListenOn, _Opts}) -> +sstop_listener({Proto, ListenOn, _Opts}) when Proto == api -> + mochiweb:stop_http('mqtt:api', ListenOn); +top_listener({Proto, ListenOn, _Opts}) -> esockd:close(Proto, ListenOn). -ifdef(TEST). From bbcc082a0d184bdc8b548df8a3920f7a103f56ba Mon Sep 17 00:00:00 2001 From: turtled Date: Tue, 13 Jun 2017 11:15:26 +0800 Subject: [PATCH 5/5] Add stop api listener function --- src/emqttd_app.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emqttd_app.erl b/src/emqttd_app.erl index 76506ee7c..7709d134f 100644 --- a/src/emqttd_app.erl +++ b/src/emqttd_app.erl @@ -200,9 +200,9 @@ stop_listener({Proto, ListenOn, _Opts}) when Proto == http; Proto == ws -> mochiweb:stop_http('mqtt:ws', ListenOn); stop_listener({Proto, ListenOn, _Opts}) when Proto == https; Proto == wss -> mochiweb:stop_http('mqtt:wss', ListenOn); -sstop_listener({Proto, ListenOn, _Opts}) when Proto == api -> +stop_listener({Proto, ListenOn, _Opts}) when Proto == api -> mochiweb:stop_http('mqtt:api', ListenOn); -top_listener({Proto, ListenOn, _Opts}) -> +stop_listener({Proto, ListenOn, _Opts}) -> esockd:close(Proto, ListenOn). -ifdef(TEST).