diff options
| author | Masaki Furuta <masaki.furuta@gmail.com> | 2019-03-22 21:21:58 +0900 |
|---|---|---|
| committer | Masaki Furuta <masaki.furuta@gmail.com> | 2019-03-22 21:21:58 +0900 |
| commit | 3a490fa848cdc23a53c884f3703d7f0f421200fc (patch) | |
| tree | fc7a7eb4e610339be29fe90819bffd048d8fa46e | |
| parent | 58ca7b99a1092c5b6d73a9263712391eef1b5955 (diff) | |
| download | rabbitmq-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.erl | 16 |
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}. |
