summaryrefslogtreecommitdiff
path: root/src/rabbit_alarm.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@lshift.net>2008-11-25 15:33:18 +0000
committerSimon MacMullen <simon@lshift.net>2008-11-25 15:33:18 +0000
commit3682c6b2e7433d59721402eeb2d55244c648ad31 (patch)
tree95ddd9a98b4ab15d794d7eb836777667530840f3 /src/rabbit_alarm.erl
parentb9387766fd7b743f874c3dd85df9db8c4a7cffb2 (diff)
downloadrabbitmq-server-3682c6b2e7433d59721402eeb2d55244c648ad31.tar.gz
Start memsup programmatically rather than starting as standard and then
killing it if we don't want it => doesn't mess up the banner on startup
Diffstat (limited to 'src/rabbit_alarm.erl')
-rw-r--r--src/rabbit_alarm.erl17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index 5ba88a30..e2f468b7 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -50,17 +50,15 @@
%%----------------------------------------------------------------------------
start() ->
+ ok = alarm_handler:add_alarm_handler(?MODULE),
case os:type() of
{unix, linux} ->
%% memsup doesn't take account of buffers or cache when considering
%% "free" memory - therefore on Linux we can get memory alarms
%% very easily without any pressure existing on memory at all.
%% Therefore we need to use our own simple memory monitor
-
- supervisor:terminate_child(os_mon_sup, memsup),
- supervisor:delete_child(os_mon_sup, memsup),
+
rabbit:start_child(rabbit_linux_memory),
-
ok;
_ ->
%% The default memsup check interval is 1 minute, which is way too
@@ -75,11 +73,16 @@ start() ->
%% check has completed, i.e. after one minute. So if rabbit eats
%% all the memory within the first minute after startup then we
%% are out of luck.
-
+
+ %% Start memsup programmatically rather than via the rabbitmq-server
+ %% script. This is not quite the right thing to do as os_mon checks
+ %% to see if memsup is available before starting it, but as memsup
+ %% is available everywhere (even on VXWorks) it should be ok.
+ supervisor:start_child(os_mon_sup, {memsup, {memsup, start_link, []},
+ permanent, 2000, worker, [memsup]}),
ok = os_mon:call(memsup, {set_check_interval, ?MEMSUP_CHECK_INTERVAL},
infinity)
- end,
- ok = alarm_handler:add_alarm_handler(?MODULE).
+ end.
stop() ->
ok = alarm_handler:delete_alarm_handler(?MODULE).