summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasaki Furuta <masaki.furuta@gmail.com>2019-03-22 21:21:58 +0900
committerMasaki Furuta <masaki.furuta@gmail.com>2019-03-22 21:21:58 +0900
commit3a490fa848cdc23a53c884f3703d7f0f421200fc (patch)
treefc7a7eb4e610339be29fe90819bffd048d8fa46e
parent58ca7b99a1092c5b6d73a9263712391eef1b5955 (diff)
downloadrabbitmq-server-git-3a490fa848cdc23a53c884f3703d7f0f421200fc.tar.gz
Debug: Applying patch to disable disk_monitor on the fly by rabbitctl eval.
To disbale: rabbitmqctl eval 'rabbit_disk_monitor:set_enabled(false).' To re-enable: rabbitmqctl eval 'rabbit_disk_monitor:set_enabled(true).'
-rw-r--r--src/rabbit_disk_monitor.erl16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/rabbit_disk_monitor.erl b/src/rabbit_disk_monitor.erl
index 2441587bce..0122e8c10e 100644
--- a/src/rabbit_disk_monitor.erl
+++ b/src/rabbit_disk_monitor.erl
@@ -39,12 +39,13 @@
-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).
-define(DEFAULT_MAX_DISK_CHECK_INTERVAL, 10000).
-define(DEFAULT_DISK_FREE_LIMIT, 50000000).
+-define(ENABLED, true).
%% 250MB/s i.e. 250kB/ms
-define(FAST_RATE, (250 * 1000)).
@@ -112,10 +113,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 +170,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}, _From, State) ->
+ case Enabled of
+ Enabled when Enabled == false ->
+ erlang:cancel_timer(State#state.timer);
+ Enabled when Enabled == true ->
+ start_timer(set_disk_limits(State, State#state.limit))
+ end,
+ {reply, ok, State#state{enabled = Enabled}};
+
handle_call(_Request, _From, State) ->
{noreply, State}.