diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-11-12 15:44:41 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-11-12 15:44:41 +0000 |
| commit | a4778edbbf873a8172fb4c00b8730d9c534200a5 (patch) | |
| tree | 326d6d8de583b77b0cde35c7da18450058ec6d37 | |
| parent | bbff74af803829caa3f42b526338dd97731dabd7 (diff) | |
| download | rabbitmq-server-git-a4778edbbf873a8172fb4c00b8730d9c534200a5.tar.gz | |
Use background_gc when the memory alarm goes off.
| -rw-r--r-- | src/background_gc.erl | 9 | ||||
| -rw-r--r-- | src/rabbit_alarm.erl | 2 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/background_gc.erl b/src/background_gc.erl index 0753dd6770..64b86b1859 100644 --- a/src/background_gc.erl +++ b/src/background_gc.erl @@ -18,7 +18,7 @@ -behaviour(gen_server2). --export([start_link/0]). +-export([start_link/0, gc_all/0]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). @@ -38,12 +38,19 @@ start_link() -> gen_server2:start_link({local, ?MODULE}, ?MODULE, [], [{timeout, infinity}]). +gc_all() -> + gen_server2:call(?MODULE, gc_all, infinity). + %%---------------------------------------------------------------------------- init([]) -> {ok, run_gc(#state{last_interval = ?IDEAL_INTERVAL}), hibernate, {backoff, ?HIBERNATE_AFTER_MIN, ?HIBERNATE_AFTER_MIN, ?DESIRED_HIBERNATE}}. +handle_call(gc_all, _From, State) -> + do_gc(), + {reply, ok, State, hibernate}; + handle_call(Msg, _From, State) -> {stop, {unexpected_call, Msg}, State}. diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl index 675d369795..e5f8a1c4d2 100644 --- a/src/rabbit_alarm.erl +++ b/src/rabbit_alarm.erl @@ -58,7 +58,7 @@ start() -> vm_memory_monitor, [MemoryWatermark, fun (Alarm) -> R = set_alarm(Alarm), - [garbage_collect(P) || P <- processes()], + background_gc:gc_all(), R end, fun clear_alarm/1]), |
