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 | 99695bfbfeb0a4d981a7fd77e0441d99b64265e4 (patch) | |
tree | beb4ce34be2b42b596ef90c57d03a2611d619d1b | |
parent | 12eecb130cad163c12fb0339f5bcde77885d03ff (diff) | |
download | rabbitmq-server-bug20019.tar.gz |
don't react to memory alarms when memory_alarms is falsebug20019
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.
-rw-r--r-- | ebin/rabbit.app | 2 | ||||
-rw-r--r-- | src/rabbit.erl | 4 | ||||
-rw-r--r-- | src/rabbit_alarm.erl | 25 |
3 files changed, 21 insertions, 10 deletions
diff --git a/ebin/rabbit.app b/ebin/rabbit.app index 5c99f516..93abd456 100644 --- a/ebin/rabbit.app +++ b/ebin/rabbit.app @@ -49,4 +49,4 @@ {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {default_vhost, <<"/">>}, - {start_memsup, false}]}]}. + {memory_alarms, false}]}]}. diff --git a/src/rabbit.erl b/src/rabbit.erl index 9dc2219b..41064c77 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 43c4ad90..7bbed8b7 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]), |