summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_disk_monitor.erl15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/rabbit_disk_monitor.erl b/src/rabbit_disk_monitor.erl
index 2441587bce..4e5e3d2a28 100644
--- a/src/rabbit_disk_monitor.erl
+++ b/src/rabbit_disk_monitor.erl
@@ -39,7 +39,7 @@
-export([get_disk_free_limit/0, set_disk_free_limit/1,
get_min_check_interval/0, set_min_check_interval/1,
get_max_check_interval/0, set_max_check_interval/1,
- get_disk_free/0]).
+ get_disk_free/0, set_enabled/1]).
-define(SERVER, ?MODULE).
-define(DEFAULT_MIN_DISK_CHECK_INTERVAL, 100).
@@ -112,10 +112,14 @@ set_max_check_interval(Interval) ->
gen_server:call(?MODULE, {set_max_check_interval, Interval}, infinity).
-spec get_disk_free() -> (integer() | 'unknown').
+-spec set_enabled(string()) -> 'ok'.
get_disk_free() ->
gen_server:call(?MODULE, get_disk_free, infinity).
+set_enabled(Enabled) ->
+ gen_server:call(?MODULE, {set_enabled, Enabled}, infinity).
+
%%----------------------------------------------------------------------------
%% gen_server callbacks
%%----------------------------------------------------------------------------
@@ -165,6 +169,15 @@ handle_call({set_max_check_interval, MaxInterval}, _From, State) ->
handle_call(get_disk_free, _From, State = #state { actual = Actual }) ->
{reply, Actual, State};
+handle_call({set_enabled, _Enabled = true}, _From, State) ->
+ start_timer(set_disk_limits(State, State#state.limit)),
+ rabbit_log:info("Free disk space monitor was enabled"),
+ {reply, ok, State#state{enabled = true}};
+handle_call({set_enabled, _Enabled = false}, _From, State) ->
+ erlang:cancel_timer(State#state.timer),
+ rabbit_log:info("Free disk space monitor was manually disabled"),
+ {reply, ok, State#state{enabled = false}};
+
handle_call(_Request, _From, State) ->
{noreply, State}.