diff options
| author | Matthias Radestock <matthias@lshift.net> | 2008-12-16 13:35:14 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@lshift.net> | 2008-12-16 13:35:14 +0000 |
| commit | a4684ace71798cf4eea76a0c84e6a48c911b7857 (patch) | |
| tree | beb4ce34be2b42b596ef90c57d03a2611d619d1b /src | |
| parent | b69fe3fb62b9cb8950fa291e5023bc457c45d7c9 (diff) | |
| download | rabbitmq-server-git-a4684ace71798cf4eea76a0c84e6a48c911b7857.tar.gz | |
don't react to memory alarms when memory_alarms is false
We still register our alarm handler in that case, since that allows
alertees to register as usual, but the handler doesn't remember alertees
and does nothing on memory alarms.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 4 | ||||
| -rw-r--r-- | src/rabbit_alarm.erl | 25 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 9dc2219bce..41064c772c 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -163,8 +163,8 @@ start(normal, []) -> ok = rabbit_amqqueue:start(), - {ok, ShouldStartMemsup} = application:get_env(start_memsup), - ok = rabbit_alarm:start(ShouldStartMemsup), + {ok, MemoryAlarms} = application:get_env(memory_alarms), + ok = rabbit_alarm:start(MemoryAlarms), ok = rabbit_binary_generator: check_empty_content_body_frame_size(), diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl index 43c4ad90c0..7bbed8b715 100644 --- a/src/rabbit_alarm.erl +++ b/src/rabbit_alarm.erl @@ -55,12 +55,12 @@ %%---------------------------------------------------------------------------- -start(StartMemsup) -> - ok = alarm_handler:add_alarm_handler(?MODULE), +start(MemoryAlarms) -> + ok = alarm_handler:add_alarm_handler(?MODULE, [MemoryAlarms]), case whereis(memsup) of - undefined -> if StartMemsup -> ok = start_memsup(), - ok = adjust_memsup_interval(); - true -> ok + undefined -> if MemoryAlarms -> ok = start_memsup(), + ok = adjust_memsup_interval(); + true -> ok end; _ -> ok = adjust_memsup_interval() end. @@ -74,9 +74,15 @@ register(Pid, HighMemMFA) -> %%---------------------------------------------------------------------------- -init([]) -> - {ok, #alarms{alertees = dict:new()}}. +init([MemoryAlarms]) -> + {ok, #alarms{alertees = case MemoryAlarms of + true -> dict:new(); + false -> undefined + end}}. +handle_call({register, _Pid, _HighMemMFA}, + State = #alarms{alertees = undefined}) -> + {ok, ok, State}; handle_call({register, Pid, HighMemMFA}, State = #alarms{alertees = Alertess}) -> _MRef = erlang:monitor(process, Pid), @@ -102,6 +108,9 @@ handle_event({clear_alarm, system_memory_high_watermark}, State) -> handle_event(_Event, State) -> {ok, State}. +handle_info({'DOWN', _MRef, process, _Pid, _Reason}, + State = #alarms{alertees = undefined}) -> + {ok, State}; handle_info({'DOWN', _MRef, process, Pid, _Reason}, State = #alarms{alertees = Alertess}) -> {ok, State#alarms{alertees = dict:erase(Pid, Alertess)}}; @@ -165,6 +174,8 @@ adjust_memsup_interval() -> {set_check_interval, ?MEMSUP_CHECK_INTERVAL}, infinity). +alert(_Alert, undefined) -> + ok; alert(Alert, Alertees) -> dict:fold(fun (Pid, {M, F, A}, Acc) -> ok = erlang:apply(M, F, A ++ [Pid, Alert]), |
