diff options
Diffstat (limited to 'src/rabbit.erl')
-rw-r--r-- | src/rabbit.erl | 21 |
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. |