summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-03-13 17:10:56 +0000
committerSimon MacMullen <simon@rabbitmq.com>2014-03-13 17:10:56 +0000
commit7ba780d84aae4dfb8b88ff997ca100512b8025fc (patch)
tree5db40260ac49206ce2b81eee5e7e63a7ef489d8d
parent8cc1b2be40b52617a36804c41c98a313f4e3c6dc (diff)
downloadrabbitmq-server-git-7ba780d84aae4dfb8b88ff997ca100512b8025fc.tar.gz
Check the config situation when installing the Windows service.
-rwxr-xr-xscripts/rabbitmq-service.bat27
-rw-r--r--src/rabbit_prelaunch.erl25
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",