summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Mazzoli <francesco@rabbitmq.com>2012-04-17 16:36:15 +0100
committerFrancesco Mazzoli <francesco@rabbitmq.com>2012-04-17 16:36:15 +0100
commit59a8cdb514cc539ba92f7e550284f00ba118345c (patch)
tree20ce9a9af4059dbcdf846bff440607b064acedf4
parent0bbde99b7539b773679fd74e9978b1a2bad08702 (diff)
downloadrabbitmq-server-59a8cdb514cc539ba92f7e550284f00ba118345c.tar.gz
Added wait_node script to wait for the node to be up.
-rw-r--r--Makefile2
-rw-r--r--src/rabbit_misc.erl9
-rwxr-xr-xwait_node21
3 files changed, 25 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 3069387c..5da62956 100644
--- a/Makefile
+++ b/Makefile
@@ -207,7 +207,7 @@ start-background-node: all
-rm -f $(RABBITMQ_MNESIA_DIR).pid
mkdir -p $(RABBITMQ_MNESIA_DIR)
setsid sh -c "$(MAKE) run-background-node > $(RABBITMQ_MNESIA_DIR)/startup_log 2> $(RABBITMQ_MNESIA_DIR)/startup_err" &
- sleep 5
+ ./wait_node $(RABBITMQ_NODENAME) $(RABBITMQ_MNESIA_DIR).pid
start-rabbit-on-node: all
echo "rabbit:start()." | $(ERL_CALL)
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl
index e224bf7b..9456e3c1 100644
--- a/src/rabbit_misc.erl
+++ b/src/rabbit_misc.erl
@@ -211,10 +211,10 @@
-spec(os_cmd/1 :: (string()) -> string()).
-spec(gb_sets_difference/2 :: (gb_set(), gb_set()) -> gb_set()).
-spec(is_running/2 :: (node(), atom()) -> boolean()).
--spec(wait_for_application/3 :: (node(), pid(), atom())
+-spec(wait_for_application/3 :: (node(), string(), atom())
-> ok | {error, process_not_running}).
--spec(wait_for_process_death/1 :: (pid()) -> ok).
--spec(read_pid_file/2 :: (file:name(), boolean()) -> pid() | no_return()).
+-spec(wait_for_process_death/1 :: (string()) -> ok).
+-spec(read_pid_file/2 :: (file:name(), boolean()) -> string() | no_return()).
-endif.
@@ -1000,6 +1000,3 @@ system(Cmd) ->
% Escape the quotes in a shell command so that it can be used in "sh -c 'cmd'"
escape_quotes(Cmd) ->
lists:flatten(lists:map(fun ($') -> "'\\''"; (Ch) -> Ch end, Cmd)).
-
-format_parse_error({_Line, Mod, Err}) ->
- lists:flatten(Mod:format_error(Err)).
diff --git a/wait_node b/wait_node
new file mode 100755
index 00000000..e4549b5c
--- /dev/null
+++ b/wait_node
@@ -0,0 +1,21 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+%%! -sname wait_node -pa ./ebin
+
+main([NodeStr, PidFile]) ->
+ case {code:load_file(rabbit_misc), code:load_file(rabbit_nodes)} of
+ {{module, _}, {module, _}} ->
+ ok;
+ _ ->
+ io:format("Compile with 'make' before running this script~n")
+ end,
+ Node = rabbit_nodes:make(NodeStr),
+ Pid = rabbit_misc:read_pid_file(PidFile, true),
+ io:format("pid is ~s~n", [Pid]),
+ rabbit_misc:wait_for_application(Node, Pid, kernel);
+main(_) ->
+ usage().
+
+usage() ->
+ io:format("Usage: ./wait_node node pidfile~n"),
+ halt(1).