summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArnaud Cogoluègnes <acogoluegnes@gmail.com>2016-11-28 15:19:13 +0100
committerGitHub <noreply@github.com>2016-11-28 15:19:13 +0100
commitee793bd498ff8e7ea29a94725dba5b808c01995f (patch)
treeb45543605e7420985a97f1398a2576b4d45664e6 /src
parente184cb08323a7ff14706aaefd033a0ff92dce2e5 (diff)
parent0a6c74ba821ba932f16bfe3ee013c43d0fac6dca (diff)
downloadrabbitmq-server-git-ee793bd498ff8e7ea29a94725dba5b808c01995f.tar.gz
Merge pull request #1039 from rabbitmq/rabbitmq-server-1026
Make it possible to disable background GC
Diffstat (limited to 'src')
-rw-r--r--src/background_gc.erl21
-rw-r--r--src/rabbit.app.src4
2 files changed, 18 insertions, 7 deletions
diff --git a/src/background_gc.erl b/src/background_gc.erl
index 2986f356f5..835eaef4df 100644
--- a/src/background_gc.erl
+++ b/src/background_gc.erl
@@ -25,7 +25,6 @@
terminate/2, code_change/3]).
-define(MAX_RATIO, 0.01).
--define(IDEAL_INTERVAL, 60000).
-define(MAX_INTERVAL, 240000).
-record(state, {last_interval}).
@@ -45,7 +44,9 @@ run() -> gen_server2:cast(?MODULE, run).
%%----------------------------------------------------------------------------
-init([]) -> {ok, interval_gc(#state{last_interval = ?IDEAL_INTERVAL})}.
+init([]) ->
+ {ok, IdealInterval} = application:get_env(rabbit, background_gc_target_interval),
+ {ok, interval_gc(#state{last_interval = IdealInterval})}.
handle_call(Msg, _From, State) ->
{stop, {unexpected_call, Msg}, {unexpected_call, Msg}, State}.
@@ -65,14 +66,22 @@ terminate(_Reason, State) -> State.
%%----------------------------------------------------------------------------
interval_gc(State = #state{last_interval = LastInterval}) ->
+ {ok, IdealInterval} = application:get_env(rabbit, background_gc_target_interval),
{ok, Interval} = rabbit_misc:interval_operation(
{?MODULE, gc, []},
- ?MAX_RATIO, ?MAX_INTERVAL, ?IDEAL_INTERVAL, LastInterval),
+ ?MAX_RATIO, ?MAX_INTERVAL, IdealInterval, LastInterval),
erlang:send_after(Interval, self(), run),
State#state{last_interval = Interval}.
gc() ->
- [garbage_collect(P) || P <- processes(),
- {status, waiting} == process_info(P, status)],
- garbage_collect(), %% since we will never be waiting...
+ Enabled = rabbit_misc:get_env(rabbit, background_gc_enabled, true),
+ case Enabled of
+ true ->
+ [garbage_collect(P) || P <- processes(),
+ {status, waiting} == process_info(P, status)],
+ %% since we will never be waiting...
+ garbage_collect();
+ false ->
+ ok
+ end,
ok.
diff --git a/src/rabbit.app.src b/src/rabbit.app.src
index dd38ad4072..9c30876c1d 100644
--- a/src/rabbit.app.src
+++ b/src/rabbit.app.src
@@ -107,5 +107,7 @@
{passphrase, undefined}
]},
%% rabbitmq-server-973
- {lazy_queue_explicit_gc_run_operation_threshold, 250}
+ {lazy_queue_explicit_gc_run_operation_threshold, 250},
+ {background_gc_enabled, true},
+ {background_gc_target_interval, 60000}
]}]}.