summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@lshift.net>2008-11-26 16:08:00 +0000
committerSimon MacMullen <simon@lshift.net>2008-11-26 16:08:00 +0000
commit86f383ff74b57023214317060f494779d04270c1 (patch)
tree3d4a192d6adc2a6f698040e20947a115a3f821dc /src
parentf958d65fce76fc4cca030b9fa93f4a2810ac4db3 (diff)
downloadrabbitmq-server-git-86f383ff74b57023214317060f494779d04270c1.tar.gz
Only start memsup if it is not already running.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_alarm.erl19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index 9a86d1c54d..6c46d5d75f 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -61,12 +61,19 @@ start() ->
rabbit:start_child(rabbit_linux_memory),
ok;
_ ->
- %% 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]}),
+ MemsupRunning = lists:any(fun ({Id, _, _, _}) -> Id == memsup end,
+ supervisor:which_children(os_mon_sup)),
+ case MemsupRunning of
+ false ->
+ %% 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
+ end,
%% The default memsup check interval is 1 minute, which is way too
%% long - rabbit can gobble up all memory in a matter of