diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-03-13 17:10:56 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-03-13 17:10:56 +0000 |
| commit | 7ba780d84aae4dfb8b88ff997ca100512b8025fc (patch) | |
| tree | 5db40260ac49206ce2b81eee5e7e63a7ef489d8d | |
| parent | 8cc1b2be40b52617a36804c41c98a313f4e3c6dc (diff) | |
| download | rabbitmq-server-git-7ba780d84aae4dfb8b88ff997ca100512b8025fc.tar.gz | |
Check the config situation when installing the Windows service.
| -rwxr-xr-x | scripts/rabbitmq-service.bat | 27 | ||||
| -rw-r--r-- | src/rabbit_prelaunch.erl | 25 |
2 files changed, 41 insertions, 11 deletions
diff --git a/scripts/rabbitmq-service.bat b/scripts/rabbitmq-service.bat index 8c350f7aad..28ee7d3054 100755 --- a/scripts/rabbitmq-service.bat +++ b/scripts/rabbitmq-service.bat @@ -59,6 +59,14 @@ if "!RABBITMQ_NODE_IP_ADDRESS!"=="" ( )
)
+if "!RABBITMQ_DIST_PORT!"=="" (
+ if "!RABBITMQ_NODE_PORT!"=="" (
+ set RABBITMQ_DIST_PORT=25672
+ ) else (
+ set /a RABBITMQ_DIST_PORT=20000+!RABBITMQ_NODE_PORT!
+ )
+)
+
if "!ERLANG_SERVICE_MANAGER_PATH!"=="" (
if not exist "!ERLANG_HOME!\bin\erl.exe" (
echo.
@@ -168,6 +176,24 @@ if "!RABBITMQ_PLUGINS_DIR!"=="" ( set RABBITMQ_EBIN_ROOT=!TDP0!..\ebin
+"!ERLANG_HOME!\bin\erl.exe" ^
+ -pa "!RABBITMQ_EBIN_ROOT!" ^
+ -noinput -hidden ^
+ -s rabbit_prelaunch ^
+ -sname rabbitmqprelaunch!RANDOM!!TIME:~9!
+
+if ERRORLEVEL 3 (
+ rem ERRORLEVEL means (or greater) so we need to catch all other failure
+ rem cases here
+ exit /B 1
+) else if ERRORLEVEL 2 (
+ rem dist port mentioned in config, do not attempt to set it
+) else if ERRORLEVEL 1 (
+ exit /B 1
+) else (
+ set RABBITMQ_DIST_ARG=-kernel inet_dist_listen_min !RABBITMQ_DIST_PORT! -kernel inet_dist_listen_max !RABBITMQ_DIST_PORT!
+)
+
if "!RABBITMQ_CONFIG_FILE!"=="" (
set RABBITMQ_CONFIG_FILE=!RABBITMQ_BASE!\rabbitmq
)
@@ -208,6 +234,7 @@ set ERLANG_SERVICE_ARGUMENTS= ^ -os_mon start_memsup false ^
-mnesia dir \""!RABBITMQ_MNESIA_DIR:\=/!"\" ^
!RABBITMQ_SERVER_START_ARGS! ^
+!RABBITMQ_DIST_ARG! ^
!STARVAR!
set ERLANG_SERVICE_ARGUMENTS=!ERLANG_SERVICE_ARGUMENTS:\=\\!
diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl index b8f9bfedb4..1bd8c9fbc0 100644 --- a/src/rabbit_prelaunch.erl +++ b/src/rabbit_prelaunch.erl @@ -40,10 +40,18 @@ %%---------------------------------------------------------------------------- start() -> - [NodeStr] = init:get_plain_arguments(), - {ok, NodeHost} = duplicate_node_check(NodeStr), - ok = dist_port_set_check(), - ok = dist_port_use_check(NodeHost), + case init:get_plain_arguments() of + [NodeStr] -> + Node = rabbit_nodes:make(NodeStr), + {NodeName, NodeHost} = rabbit_nodes:parts(Node), + ok = duplicate_node_check(Node, NodeName, NodeHost), + ok = dist_port_set_check(), + ok = dist_port_use_check(NodeHost); + [] -> + %% Ignore running node while installing windows service + ok = dist_port_set_check(), + ok + end, rabbit_misc:quit(?DIST_PORT_NOT_CONFIGURED), ok. @@ -53,12 +61,7 @@ stop() -> %%---------------------------------------------------------------------------- %% Check whether a node with the same name is already running -duplicate_node_check([]) -> - %% Ignore running node while installing windows service - ok; -duplicate_node_check(NodeStr) -> - Node = rabbit_nodes:make(NodeStr), - {NodeName, NodeHost} = rabbit_nodes:parts(Node), +duplicate_node_check(Node, NodeName, NodeHost) -> case rabbit_nodes:names(NodeHost) of {ok, NamePorts} -> case proplists:is_defined(NodeName, NamePorts) of @@ -67,7 +70,7 @@ duplicate_node_check(NodeStr) -> [NodeName, NodeHost]), io:format(rabbit_nodes:diagnostics([Node]) ++ "~n"), rabbit_misc:quit(?ERROR_CODE); - false -> {ok, NodeHost} + false -> ok end; {error, EpmdReason} -> io:format("ERROR: epmd error for host ~s: ~s~n", |
