summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Garnock-Jones <tonyg@lshift.net>2009-12-17 19:22:52 +0000
committerTony Garnock-Jones <tonyg@lshift.net>2009-12-17 19:22:52 +0000
commitee479b380577debd2d9cfa83682fbb8e0a6f520f (patch)
tree3a2079c6775ff25dca211175b932feb7ff5e382b
parente7349b9bdac9789dad02a17c167f49e5398453c6 (diff)
downloadrabbitmq-server-bug22039.tar.gz
Refactor away boot_core_processes.bug22039
-rw-r--r--src/rabbit.erl83
-rw-r--r--src/rabbit_alarm.erl10
2 files changed, 60 insertions, 33 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 078ee31b..569bdb1f 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -41,16 +41,59 @@
%%---------------------------------------------------------------------------
%% Boot steps.
--export([boot_core_processes/0,
- maybe_insert_default_data/0]).
+-export([maybe_insert_default_data/0]).
+
+-rabbit_boot_step({codec_correctness_check,
+ [{description, "codec correctness check"},
+ {mfa, {rabbit_binary_generator,
+ check_empty_content_body_frame_size,
+ []}}]}).
-rabbit_boot_step({database,
- [{mfa, {rabbit_mnesia, init, []}}]}).
+ [{mfa, {rabbit_mnesia, init, []}},
+ {pre, kernel_ready}]}).
+
+-rabbit_boot_step({rabbit_exchange_type,
+ [{description, "exchange type registry"},
+ {mfa, {rabbit_sup, start_child, [rabbit_exchange_type]}},
+ {pre, kernel_ready}]}).
+
+-rabbit_boot_step({rabbit_log,
+ [{description, "logging server"},
+ {mfa, {rabbit_sup, start_child, [rabbit_log]}},
+ {pre, kernel_ready}]}).
+
+-rabbit_boot_step({rabbit_hooks,
+ [{description, "internal event notification system"},
+ {mfa, {rabbit_hooks, start, []}},
+ {pre, kernel_ready}]}).
+
+-rabbit_boot_step({kernel_ready,
+ [{description, "kernel ready"}]}).
+
+-rabbit_boot_step({rabbit_alarm,
+ [{description, "alarm handler"},
+ {mfa, {rabbit_alarm, start, []}},
+ {post, kernel_ready},
+ {pre, core_initialized}]}).
+
+-rabbit_boot_step({rabbit_amqqueue_sup,
+ [{description, "queue supervisor"},
+ {mfa, {rabbit_amqqueue, start, []}},
+ {post, kernel_ready},
+ {pre, core_initialized}]}).
--rabbit_boot_step({core_processes,
- [{description, "core processes"},
- {mfa, {?MODULE, boot_core_processes, []}},
- {post, database},
+-rabbit_boot_step({rabbit_router,
+ [{description, "cluster router"},
+ {mfa, {rabbit_sup, start_child, [rabbit_router]}},
+ {post, kernel_ready},
+ {pre, core_initialized}]}).
+
+-rabbit_boot_step({rabbit_node_monitor,
+ [{description, "node monitor"},
+ {mfa, {rabbit_sup, start_child, [rabbit_node_monitor]}},
+ {post, kernel_ready},
+ {post, rabbit_amqqueue_sup},
{pre, core_initialized}]}).
-rabbit_boot_step({core_initialized,
@@ -210,7 +253,7 @@ run_boot_step({StepName, Attributes}) ->
[] ->
io:format("progress -- ~s~n", [Description]);
MFAs ->
- io:format("starting ~-20s ...", [Description]),
+ io:format("starting ~-40s ...", [Description]),
[case catch apply(M,F,A) of
{'EXIT', Reason} ->
boot_error("FAILED~nReason: ~p~n", [Reason]);
@@ -293,30 +336,6 @@ add_boot_step_dep(G, RunsSecond, RunsFirst) ->
%%---------------------------------------------------------------------------
-boot_core_processes() ->
- ok = rabbit_sup:start_child(rabbit_exchange_type),
- ok = rabbit_sup:start_child(rabbit_log),
- ok = rabbit_hooks:start(),
-
- ok = rabbit_binary_generator:check_empty_content_body_frame_size(),
-
- ok = rabbit_alarm:start(),
-
- {ok, MemoryWatermark} = application:get_env(vm_memory_high_watermark),
- ok = case MemoryWatermark == 0 of
- true ->
- ok;
- false ->
- rabbit_sup:start_child(vm_memory_monitor, [MemoryWatermark])
- end,
-
- ok = rabbit_amqqueue:start(),
-
- ok = rabbit_sup:start_child(rabbit_router),
- ok = rabbit_sup:start_child(rabbit_node_monitor).
-
-%---------------------------------------------------------------------------
-
log_location(Type) ->
case application:get_env(Type, case Type of
kernel -> error_logger;
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index 9a639ed4..534409aa 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -54,7 +54,15 @@
%%----------------------------------------------------------------------------
start() ->
- ok = alarm_handler:add_alarm_handler(?MODULE, []).
+ ok = alarm_handler:add_alarm_handler(?MODULE, []),
+ {ok, MemoryWatermark} = application:get_env(vm_memory_high_watermark),
+ ok = case MemoryWatermark == 0 of
+ true ->
+ ok;
+ false ->
+ rabbit_sup:start_child(vm_memory_monitor, [MemoryWatermark])
+ end,
+ ok.
stop() ->
ok = alarm_handler:delete_alarm_handler(?MODULE).