summaryrefslogtreecommitdiff
path: root/src/rabbit.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rabbit.erl')
-rw-r--r--src/rabbit.erl21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 18fd1b17..29407e4e 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -140,8 +140,16 @@ start(normal, []) ->
ok = rabbit_binary_generator:
check_empty_content_body_frame_size(),
- {ok, MemoryAlarms} = application:get_env(memory_alarms),
- ok = rabbit_alarm:start(MemoryAlarms),
+ ok = rabbit_alarm:start(),
+ MemoryWatermark =
+ application:get_env(os_mon, vm_memory_high_watermark),
+ ok = case MemoryWatermark of
+ {ok, Float} when Float == 0 -> ok;
+ {ok, Float} -> start_child(vm_memory_monitor, [Float]);
+ undefined ->
+ throw({undefined, os_mon,
+ vm_memory_high_watermark, settings})
+ end,
ok = rabbit_amqqueue:start(),
@@ -202,6 +210,10 @@ start(normal, []) ->
stop(_State) ->
terminated_ok = error_logger:delete_report_handler(rabbit_error_logger),
ok = rabbit_alarm:stop(),
+ ok = case rabbit_mnesia:is_clustered() of
+ true -> rabbit_amqqueue:on_node_down(node());
+ false -> rabbit_mnesia:empty_ram_only_tables()
+ end,
ok.
%---------------------------------------------------------------------------
@@ -264,8 +276,11 @@ print_banner() ->
io:nl().
start_child(Mod) ->
+ start_child(Mod, []).
+
+start_child(Mod, Args) ->
{ok,_} = supervisor:start_child(rabbit_sup,
- {Mod, {Mod, start_link, []},
+ {Mod, {Mod, start_link, Args},
transient, 100, worker, [Mod]}),
ok.