diff options
| -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]), |
