From 307bce2e1da7f921cbf19af13e15051c07bb1bbc Mon Sep 17 00:00:00 2001 From: huangdan Date: Mon, 24 Aug 2015 11:33:16 +0800 Subject: [PATCH 1/7] plugins load for windows --- rel/files/emqttd.cmd | 13 +++++- rel/files/start_erl.cmd | 90 +++++++++++++++++++++++------------------ 2 files changed, 62 insertions(+), 41 deletions(-) diff --git a/rel/files/emqttd.cmd b/rel/files/emqttd.cmd index 6e58225dc..8a0d5eb73 100644 --- a/rel/files/emqttd.cmd +++ b/rel/files/emqttd.cmd @@ -1,4 +1,6 @@ +@echo off @setlocal +@setlocal enabledelayedexpansion @set node_name=emqttd @@ -69,7 +71,16 @@ @goto :EOF :console -@start "%node_name% console" %werl% -boot "%node_boot_script%" -config "%sys_config%" -args_file "%vm_args%" -sname %node_name% +set dest_path=%~dp0 +cd /d !dest_path!..\plugins +set current_path=%cd% +set plugins= +for /d %%P in (*) do ( +set "plugins=!plugins!!current_path!\%%P\ebin " +) +cd /d %node_root% + +@start "%node_name% console" %werl% -boot "%node_boot_script%" -config "%sys_config%" -args_file "%vm_args%" -sname %node_name% -pa %plugins% @goto :EOF :query diff --git a/rel/files/start_erl.cmd b/rel/files/start_erl.cmd index 86bbe5a9f..76d2bbc3d 100644 --- a/rel/files/start_erl.cmd +++ b/rel/files/start_erl.cmd @@ -1,40 +1,50 @@ -@setlocal - -@rem Parse arguments. erlsrv.exe prepends erl arguments prior to first ++. -@rem Other args are position dependent. -@set args="%*" -@for /F "delims=++ tokens=1,2,3" %%I in (%args%) do @( - @set erl_args=%%I - @call :set_trim node_name %%J - @rem Trim spaces from the left of %%K (node_root), which may have spaces inside - @for /f "tokens=* delims= " %%a in ("%%K") do @set node_root=%%a -) - -@set releases_dir=%node_root%\releases - -@rem parse ERTS version and release version from start_erl.dat -@for /F "usebackq tokens=1,2" %%I in ("%releases_dir%\start_erl.data") do @( - @call :set_trim erts_version %%I - @call :set_trim release_version %%J -) - -@set erl_exe="%node_root%\erts-%erts_version%\bin\erl.exe" -@set boot_file="%releases_dir%\%release_version%\%node_name%" - -@if exist "%releases_dir%\%release_version%\sys.config" ( - @set app_config="%releases_dir%\%release_version%\sys.config" -) else ( - @set app_config="%node_root%\etc\emqttd.config" -) - -@if exist "%releases_dir%\%release_version%\vm.args" ( - @set vm_args="%releases_dir%\%release_version%\vm.args" -) else ( - @set vm_args="%node_root%\etc\vm.args" -) - -@%erl_exe% %erl_args% -boot %boot_file% -config %app_config% -args_file %vm_args% - -:set_trim -@set %1=%2 -@goto :EOF +@setlocal +@echo off +@setlocal enabledelayedexpansion + +@rem Parse arguments. erlsrv.exe prepends erl arguments prior to first ++. +@rem Other args are position dependent. +@set args="%*" +@for /F "delims=++ tokens=1,2,3" %%I in (%args%) do @( + @set erl_args=%%I + @call :set_trim node_name %%J + @rem Trim spaces from the left of %%K (node_root), which may have spaces inside + @for /f "tokens=* delims= " %%a in ("%%K") do @set node_root=%%a +) + +@set releases_dir=%node_root%\releases + +@rem parse ERTS version and release version from start_erl.dat +@for /F "usebackq tokens=1,2" %%I in ("%releases_dir%\start_erl.data") do @( + @call :set_trim erts_version %%I + @call :set_trim release_version %%J +) + +@set erl_exe="%node_root%\erts-%erts_version%\bin\erl.exe" +@set boot_file="%releases_dir%\%release_version%\%node_name%" + +@if exist "%releases_dir%\%release_version%\sys.config" ( + @set app_config="%releases_dir%\%release_version%\sys.config" +) else ( + @set app_config="%node_root%\etc\emqttd.config" +) + +@if exist "%releases_dir%\%release_version%\vm.args" ( + @set vm_args="%releases_dir%\%release_version%\vm.args" +) else ( + @set vm_args="%node_root%\etc\vm.args" +) + +set dest_path=%~dp0 +cd /d !dest_path!..\plugins +set current_path=%cd% +set plugins= +for /d %%P in (*) do ( +set "plugins=!plugins!!current_path!\%%P\ebin " +) +cd /d %node_root% +@%erl_exe% %erl_args% -boot %boot_file% -config %app_config% -args_file %vm_args% -pa %plugins% + +:set_trim +@set %1=%2 +@goto :EOF From 619aeeba9064012f24d766eea7e00b8f07940f29 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 25 Aug 2015 13:48:28 +0800 Subject: [PATCH 2/7] update dashboard --- plugins/emqttd_dashboard | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/emqttd_dashboard b/plugins/emqttd_dashboard index c87d9c458..edbb6dc08 160000 --- a/plugins/emqttd_dashboard +++ b/plugins/emqttd_dashboard @@ -1 +1 @@ -Subproject commit c87d9c4580e568917b4b026c809becf2cccd469e +Subproject commit edbb6dc0862973137b056248efb5940d003d75be From 2e22de6123b2f88457e22e4358a273d71d427037 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 25 Aug 2015 13:49:16 +0800 Subject: [PATCH 3/7] 0.10.1 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f46977d8a..d59ca6535 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ emqttd ChangeLog ================== +0.10.1-beta (2015-08-25) +------------------------- + +Bugfix: issue#259 - when clustered the emqttd_dashboard port is close, and the 'emqttd' application cannot stop normally. + +Feature: issue#262 - Add 'http://host:8083/mqtt/status' Page for health check + + 0.10.0-beta (2015-08-20) ------------------------- From 4698d040fdb83a1c544dd29ffd30b3a424e86769 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 25 Aug 2015 13:49:28 +0800 Subject: [PATCH 4/7] fix issue #262 --- src/emqttd_http.erl | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/emqttd_http.erl b/src/emqttd_http.erl index 586c48546..946ad0b65 100644 --- a/src/emqttd_http.erl +++ b/src/emqttd_http.erl @@ -39,6 +39,17 @@ handle_request(Req) -> handle_request(Req:get(method), Req:get(path), Req). +handle_request('GET', "/mqtt/status", Req) -> + {InternalStatus, _ProvidedStatus} = init:get_status(), + AppStatus = + case lists:keysearch(emqttd, 1, application:which_applications()) of + false -> not_running; + {value, _Ver} -> running + end, + Status = io_lib:format("Node ~s is ~s~nemqttd is ~s~n", + [node(), InternalStatus, AppStatus]), + Req:ok({"text/plain", iolist_to_binary(Status)}); + %%------------------------------------------------------------------------------ %% HTTP Publish API %%------------------------------------------------------------------------------ From 20384de0ef6cd5a578bc0531a40e8ace3fa8c569 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 25 Aug 2015 23:37:13 +0800 Subject: [PATCH 5/7] fix issue #257 --- rel/files/emqttd | 6 ++++++ rel/files/vm.args | 5 ----- rel/reltool.config | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/rel/files/emqttd b/rel/files/emqttd index 8574571c1..6afa2a08b 100755 --- a/rel/files/emqttd +++ b/rel/files/emqttd @@ -20,6 +20,7 @@ RUNNER_BASE_DIR={{runner_base_dir}} RUNNER_ETC_DIR={{runner_etc_dir}} RUNNER_LIB_DIR={{platform_lib_dir}} RUNNER_LOG_DIR={{runner_log_dir}} +RUNNER_DATA_DIR=$RUNNER_BASE_DIR/data RUNNER_PLUGINS_DIR=$RUNNER_BASE_DIR/plugins # Note the trailing slash on $PIPE_DIR/ @@ -72,6 +73,8 @@ if [ -z "$NAME_ARG" ]; then echo "vm.args needs to have either -name or -sname parameter." exit 1 fi +NAME_ARR=(${NAME_ARG// / }) +NODE_NAME=${NAME_ARR[1]} # Extract the target cookie COOKIE_ARG=`grep '^\-setcookie' $RUNNER_ETC_DIR/vm.args` @@ -264,9 +267,12 @@ case "$1" in BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin EMU=beam PROGNAME=`echo $0 | sed 's/.*\///'` + # Setup Mnesia Dir + MNESIA_DIR="$RUNNER_DATA_DIR/mnesia/$NODE_NAME" CMD="$BINDIR/erlexec -boot $RUNNER_BASE_DIR/releases/$APP_VSN/$SCRIPT \ -embedded -config $RUNNER_ETC_DIR/emqttd.config \ -pa $RUNNER_LIB_DIR/basho-patches \ + -mnesia dir "\"${MNESIA_DIR}\"" \ -args_file $RUNNER_ETC_DIR/vm.args -- ${1+"$@"}" export EMU export ROOTDIR diff --git a/rel/files/vm.args b/rel/files/vm.args index 0f3894c92..39fb4c708 100644 --- a/rel/files/vm.args +++ b/rel/files/vm.args @@ -6,11 +6,6 @@ ## Cookie for distributed erlang -setcookie emqttdsecretcookie -##------------------------------------------------------------------------- -## Mnesia dir. NOTICE: quote the dir with '" "' -##------------------------------------------------------------------------- --mnesia dir '"data/mnesia"' - ##------------------------------------------------------------------------- ## Flags ##------------------------------------------------------------------------- diff --git a/rel/reltool.config b/rel/reltool.config index 72dfede6e..e5c75902e 100644 --- a/rel/reltool.config +++ b/rel/reltool.config @@ -73,6 +73,7 @@ {mkdir, "etc/"}, {mkdir, "etc/ssl/"}, {mkdir, "data/"}, + {mkdir, "data/mnesia"}, {mkdir, "plugins/"}, {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"}, {template, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"}, From 0f73dbf4a853b6b505171b8d45605b08ac0e86b1 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 25 Aug 2015 23:44:40 +0800 Subject: [PATCH 6/7] 0.10.2 --- CHANGELOG.md | 6 ++++++ src/emqttd.app.src | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d59ca6535..bc723bf8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ emqttd ChangeLog ================== +0.10.2-beta (2015-08-25) +------------------------- + +Improve: issue#257 - After the node name changed, the broker cannot restart for mnesia schema error. + + 0.10.1-beta (2015-08-25) ------------------------- diff --git a/src/emqttd.app.src b/src/emqttd.app.src index 2a08549a0..b4632833e 100644 --- a/src/emqttd.app.src +++ b/src/emqttd.app.src @@ -1,7 +1,7 @@ {application, emqttd, [ {description, "Erlang MQTT Broker"}, - {vsn, "0.10.1"}, + {vsn, "0.10.2"}, {modules, []}, {registered, []}, {applications, [kernel, From 08826dd6fe746ce3bec2801518a1c020fc116a39 Mon Sep 17 00:00:00 2001 From: Feng Date: Tue, 25 Aug 2015 23:47:09 +0800 Subject: [PATCH 7/7] 08-26 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc723bf8b..868e0b8cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ emqttd ChangeLog ================== -0.10.2-beta (2015-08-25) +0.10.2-beta (2015-08-26) ------------------------- Improve: issue#257 - After the node name changed, the broker cannot restart for mnesia schema error.