From f5adafe9e2852a9a2299717004b2bf6615cb89ae Mon Sep 17 00:00:00 2001 From: Feng Date: Fri, 29 Apr 2016 00:17:07 +0800 Subject: [PATCH 1/9] fix issue #535 --- src/emqttd_client.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/emqttd_client.erl b/src/emqttd_client.erl index 3687eaa7f..f3169339a 100644 --- a/src/emqttd_client.erl +++ b/src/emqttd_client.erl @@ -79,11 +79,12 @@ init([OriginConn, MqttEnv]) -> exit({shutdown, Reason}) end, ConnName = esockd_net:format(PeerName), + Self = self(), SendFun = fun(Data) -> try Connection:async_send(Data) of true -> ok catch - error:Error -> exit({shutdown, Error}) + error:Error -> Self ! {shutdown, Error} end end, PktOpts = proplists:get_value(packet, MqttEnv), @@ -138,6 +139,10 @@ handle_cast(Msg, State) -> handle_info(timeout, State) -> shutdown(idle_timeout, State); +%% fix issue #535 +handle_info({shutdown, Error}, State) -> + shutdown(Error, State); + %% Asynchronous SUBACK handle_info({suback, PacketId, GrantedQos}, State) -> with_proto_state(fun(ProtoState) -> From 17d15986885f8e592db11e75c37ebb8de531c386 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Fri, 29 Apr 2016 00:23:57 +0800 Subject: [PATCH 2/9] Fix issue#534 - Add './bin/emqttd_ctl vm ports' CLI --- src/emqttd_cli.erl | 18 ++++++++++++------ test/emqttd_SUITE.erl | 7 ++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/emqttd_cli.erl b/src/emqttd_cli.erl index d41bf26de..bcc68e5cf 100644 --- a/src/emqttd_cli.erl +++ b/src/emqttd_cli.erl @@ -368,7 +368,7 @@ vm([]) -> vm(["all"]); vm(["all"]) -> - [vm([Name]) || Name <- ["load", "memory", "process", "io"]]; + [vm([Name]) || Name <- ["load", "memory", "process", "io", "ports"]]; vm(["load"]) -> [?PRINT("cpu/~-20s: ~s~n", [L, V]) || {L, V} <- emqttd_vm:loads()]; @@ -387,12 +387,18 @@ vm(["io"]) -> ?PRINT("io/~-21s: ~w~n", [Key, get_value(Key, IoInfo)]) end, [max_fds, active_fds]); +vm(["ports"]) -> + foreach(fun({Name, Key}) -> + ?PRINT("ports/~-16s: ~w~n", [Name, erlang:system_info(Key)]) + end, [{count, port_count}, {limit, port_limit}]); + vm(_) -> - ?USAGE([{"vm all", "Show info of erlang vm"}, - {"vm load", "Show load of erlang vm"}, - {"vm memory", "Show memory of erlang vm"}, - {"vm process", "Show process of erlang vm"}, - {"vm io", "Show IO of erlang vm"}]). + ?USAGE([{"vm all", "Show info of Erlang VM"}, + {"vm load", "Show load of Erlang VM"}, + {"vm memory", "Show memory of Erlang VM"}, + {"vm process", "Show process of Erlang VM"}, + {"vm io", "Show IO of Erlang VM"}, + {"vm ports", "Show Ports of Erlang VM"}]). %%-------------------------------------------------------------------- %% @doc mnesia Command diff --git a/test/emqttd_SUITE.erl b/test/emqttd_SUITE.erl index 8e9366503..fc65e0477 100644 --- a/test/emqttd_SUITE.erl +++ b/test/emqttd_SUITE.erl @@ -74,7 +74,8 @@ groups() -> cli_subscriptions, cli_bridges, cli_plugins, - cli_listeners]}]. + cli_listeners, + cli_vm]}]. init_per_suite(Config) -> application:start(lager), @@ -419,3 +420,7 @@ cli_bridges(_) -> cli_listeners(_) -> emqttd_cli:listeners([]). +cli_vm(_) -> + emqttd_cli:vm(), + emqttd_cli:vm(["ports"]). + From 26df1f59bc50e7256d06fb8b079a4167f01e28f7 Mon Sep 17 00:00:00 2001 From: Feng Date: Fri, 29 Apr 2016 00:38:00 +0800 Subject: [PATCH 3/9] update stomp, reloader plugins --- .gitmodules | 3 +++ plugins/emqttd_reloader | 1 + plugins/emqttd_stomp | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 160000 plugins/emqttd_reloader diff --git a/.gitmodules b/.gitmodules index 17e1be420..dc7660343 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "plugins/emqttd_plugin_redis"] path = plugins/emqttd_plugin_redis url = https://github.com/emqtt/emqttd_plugin_redis.git +[submodule "plugins/emqttd_reloader"] + path = plugins/emqttd_reloader + url = https://github.com/emqtt/emqttd_reloader.git diff --git a/plugins/emqttd_reloader b/plugins/emqttd_reloader new file mode 160000 index 000000000..8683f0a8a --- /dev/null +++ b/plugins/emqttd_reloader @@ -0,0 +1 @@ +Subproject commit 8683f0a8a9b1e96962f6c6a9df9e46d57f68aa47 diff --git a/plugins/emqttd_stomp b/plugins/emqttd_stomp index b8b5393ec..745871d6a 160000 --- a/plugins/emqttd_stomp +++ b/plugins/emqttd_stomp @@ -1 +1 @@ -Subproject commit b8b5393ecda9617a2b724dae0ab431d368963ca4 +Subproject commit 745871d6ae6f80de49dc4350772dd0f91d6a4408 From 3c69124d9611a5336b463613af074ee0d32348e2 Mon Sep 17 00:00:00 2001 From: Feng Date: Fri, 29 Apr 2016 00:46:27 +0800 Subject: [PATCH 4/9] upgrade reloader plugin --- plugins/emqttd_reloader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/emqttd_reloader b/plugins/emqttd_reloader index 8683f0a8a..d7ff2a70b 160000 --- a/plugins/emqttd_reloader +++ b/plugins/emqttd_reloader @@ -1 +1 @@ -Subproject commit 8683f0a8a9b1e96962f6c6a9df9e46d57f68aa47 +Subproject commit d7ff2a70bc259432c9cf38e7c55781a474b4d2eb From c2591494b6e7a59beb68f0605d20ba130144f809 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Tue, 3 May 2016 18:23:06 +0800 Subject: [PATCH 5/9] esockd .* --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index fc6762faf..1ee966c4f 100644 --- a/rebar.config +++ b/rebar.config @@ -41,7 +41,7 @@ {deps, [ {gproc, ".*", {git, "git://github.com/uwiger/gproc.git", {branch, "master"}}}, {lager, ".*", {git, "git://github.com/basho/lager.git", {branch, "master"}}}, - {esockd, "3.*", {git, "git://github.com/emqtt/esockd.git", {branch, "master"}}}, + {esockd, ".*", {git, "git://github.com/emqtt/esockd.git", {branch, "master"}}}, {mochiweb, "4.*", {git, "git://github.com/emqtt/mochiweb.git", {branch, "master"}}} ]}. From 9cf5e5cf2a2868319427c805d1d436404a5a2702 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Tue, 3 May 2016 18:29:05 +0800 Subject: [PATCH 6/9] vm([]) --- test/emqttd_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/emqttd_SUITE.erl b/test/emqttd_SUITE.erl index fc65e0477..ab5480aad 100644 --- a/test/emqttd_SUITE.erl +++ b/test/emqttd_SUITE.erl @@ -421,6 +421,6 @@ cli_listeners(_) -> emqttd_cli:listeners([]). cli_vm(_) -> - emqttd_cli:vm(), + emqttd_cli:vm([]), emqttd_cli:vm(["ports"]). From 76851e58fb7846e672e2ce373598e4a66ee61a65 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Tue, 3 May 2016 18:31:58 +0800 Subject: [PATCH 7/9] atom_to_list(Username) --- rel/files/emqttd.test.config | 2 +- src/emqttd_auth_username.erl | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/rel/files/emqttd.test.config b/rel/files/emqttd.test.config index f837d07ac..c2b90993e 100644 --- a/rel/files/emqttd.test.config +++ b/rel/files/emqttd.test.config @@ -46,7 +46,7 @@ %% Authetication. Anonymous Default {auth, [ %% Authentication with username, password - %{username, []}, + {username, [{test, "password"}, {"test1", "password1"}]}, %% Authentication with clientid %{clientid, [{password, no}, {file, "etc/clients.config"}]}, diff --git a/src/emqttd_auth_username.erl b/src/emqttd_auth_username.erl index 155537a83..3bbae8abf 100644 --- a/src/emqttd_auth_username.erl +++ b/src/emqttd_auth_username.erl @@ -77,6 +77,9 @@ add_user(Username, Password) -> User = #?AUTH_USERNAME_TAB{username = Username, password = hash(Password)}, ret(mnesia:transaction(fun mnesia:write/1, [User])). +add_default_user(Username, Password) when is_atom(Username) -> + add_default_user(atom_to_list(Username), Password); + add_default_user(Username, Password) -> add_user(iolist_to_binary(Username), iolist_to_binary(Password)). From dae1cc1f813c5ab582ad9b1aeaeac2c1f362f388 Mon Sep 17 00:00:00 2001 From: Feng Date: Wed, 4 May 2016 01:02:00 +0800 Subject: [PATCH 8/9] 1.0.2 release --- docs/source/changes.rst | 16 +++++++++++++++- src/emqttd.app.src | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/source/changes.rst b/docs/source/changes.rst index 96f29fa03..309f65e13 100644 --- a/docs/source/changes.rst +++ b/docs/source/changes.rst @@ -5,7 +5,21 @@ Changes ======= -.. _release_1.0.1: +.. _release_1.0.2: + +------------- +Version 1.0.2 +------------- + +*Release Date: 2016-05-04* + +Issue#534 - './bin/emqttd_ctl vm' - add 'port/count', 'port/limit' statistics + +Issue#535 - emqttd_client should be terminated properly even if exception happened when sending data + +PR#519 - The erlang '-name' requires the fully qualified host name + +.. _release_l.0.1: ------------- Version 1.0.1 diff --git a/src/emqttd.app.src b/src/emqttd.app.src index 8e102ccc6..647c7d49d 100644 --- a/src/emqttd.app.src +++ b/src/emqttd.app.src @@ -1,7 +1,7 @@ {application, emqttd, [ {description, "Erlang MQTT Broker"}, - {vsn, "1.0.1"}, + {vsn, "1.0.2"}, {id, "emqttd"}, {modules, []}, {registered, []}, From a95f96a3218626c90d0a214512d16dff4fb49505 Mon Sep 17 00:00:00 2001 From: Feng Date: Wed, 4 May 2016 01:25:33 +0800 Subject: [PATCH 9/9] 1.0.2 - upgrade plugins --- docs/source/changes.rst | 2 ++ plugins/emqttd_dashboard | 2 +- plugins/emqttd_plugin_mysql | 2 +- plugins/emqttd_plugin_pgsql | 2 +- plugins/emqttd_plugin_redis | 2 +- plugins/emqttd_plugin_template | 2 +- plugins/emqttd_reloader | 2 +- plugins/emqttd_stomp | 2 +- 8 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/source/changes.rst b/docs/source/changes.rst index 309f65e13..bc16d60ce 100644 --- a/docs/source/changes.rst +++ b/docs/source/changes.rst @@ -19,6 +19,8 @@ Issue#535 - emqttd_client should be terminated properly even if exception happen PR#519 - The erlang '-name' requires the fully qualified host name +emqttd_reloader plugin - help reload modified modules during development. + .. _release_l.0.1: ------------- diff --git a/plugins/emqttd_dashboard b/plugins/emqttd_dashboard index 0a5983510..db9ed84da 160000 --- a/plugins/emqttd_dashboard +++ b/plugins/emqttd_dashboard @@ -1 +1 @@ -Subproject commit 0a59835106c7672699da7c2f9deb576678fdb37e +Subproject commit db9ed84da2c5f578f5762a6a69f715b7edafa02f diff --git a/plugins/emqttd_plugin_mysql b/plugins/emqttd_plugin_mysql index d714c7598..dfc35e696 160000 --- a/plugins/emqttd_plugin_mysql +++ b/plugins/emqttd_plugin_mysql @@ -1 +1 @@ -Subproject commit d714c759804f9528f187fadd544912e37fd664b0 +Subproject commit dfc35e6960a5ddbba8619cf92e72bf14dda4a54c diff --git a/plugins/emqttd_plugin_pgsql b/plugins/emqttd_plugin_pgsql index 81f0164a3..c81f66331 160000 --- a/plugins/emqttd_plugin_pgsql +++ b/plugins/emqttd_plugin_pgsql @@ -1 +1 @@ -Subproject commit 81f0164a339044d329c3179f922df332ae102696 +Subproject commit c81f663312ae371808fe10a5997ea78c3033eae7 diff --git a/plugins/emqttd_plugin_redis b/plugins/emqttd_plugin_redis index 9fef7a1b7..fa2b98ffa 160000 --- a/plugins/emqttd_plugin_redis +++ b/plugins/emqttd_plugin_redis @@ -1 +1 @@ -Subproject commit 9fef7a1b762dfd8ad27190ebe31dd3afc784c6fa +Subproject commit fa2b98ffa808242850fe118660ab77be3b6ea3ba diff --git a/plugins/emqttd_plugin_template b/plugins/emqttd_plugin_template index 6e1382b63..653e37d8e 160000 --- a/plugins/emqttd_plugin_template +++ b/plugins/emqttd_plugin_template @@ -1 +1 @@ -Subproject commit 6e1382b63096cc3259f7edc6c26adc571ee53d74 +Subproject commit 653e37d8e472b121c454fa2acd51f696ff144bd5 diff --git a/plugins/emqttd_reloader b/plugins/emqttd_reloader index d7ff2a70b..aaaa7c5d1 160000 --- a/plugins/emqttd_reloader +++ b/plugins/emqttd_reloader @@ -1 +1 @@ -Subproject commit d7ff2a70bc259432c9cf38e7c55781a474b4d2eb +Subproject commit aaaa7c5d11ffb681a79a264200602c5b7dc2dc1a diff --git a/plugins/emqttd_stomp b/plugins/emqttd_stomp index 745871d6a..39650c468 160000 --- a/plugins/emqttd_stomp +++ b/plugins/emqttd_stomp @@ -1 +1 @@ -Subproject commit 745871d6ae6f80de49dc4350772dd0f91d6a4408 +Subproject commit 39650c4685a38cecbdac785c3aafcd4c669aa301