|
39 | 39 | -export([get_disk_free_limit/0, set_disk_free_limit/1, |
40 | 40 | get_min_check_interval/0, set_min_check_interval/1, |
41 | 41 | get_max_check_interval/0, set_max_check_interval/1, |
42 | | - get_disk_free/0]). |
| 42 | + get_disk_free/0, set_enabled/1]). |
43 | 43 |
|
44 | 44 | -define(SERVER, ?MODULE). |
45 | 45 | -define(DEFAULT_MIN_DISK_CHECK_INTERVAL, 100). |
@@ -110,6 +110,10 @@ set_max_check_interval(Interval) -> |
110 | 110 | get_disk_free() -> |
111 | 111 | gen_server:call(?MODULE, get_disk_free, infinity). |
112 | 112 |
|
| 113 | +-spec set_enabled(string()) -> 'ok'. |
| 114 | +set_enabled(Enabled) -> |
| 115 | + gen_server:call(?MODULE, {set_enabled, Enabled}, infinity). |
| 116 | + |
113 | 117 | %%---------------------------------------------------------------------------- |
114 | 118 | %% gen_server callbacks |
115 | 119 | %%---------------------------------------------------------------------------- |
@@ -157,6 +161,15 @@ handle_call({set_max_check_interval, MaxInterval}, _From, State) -> |
157 | 161 | handle_call(get_disk_free, _From, State = #state { actual = Actual }) -> |
158 | 162 | {reply, Actual, State}; |
159 | 163 |
|
| 164 | +handle_call({set_enabled, _Enabled = true}, _From, State) -> |
| 165 | + start_timer(set_disk_limits(State, State#state.limit)), |
| 166 | + rabbit_log:info("Free disk space monitor was enabled"), |
| 167 | + {reply, ok, State#state{enabled = true}}; |
| 168 | +handle_call({set_enabled, _Enabled = false}, _From, State) -> |
| 169 | + erlang:cancel_timer(State#state.timer), |
| 170 | + rabbit_log:info("Free disk space monitor was manually disabled"), |
| 171 | + {reply, ok, State#state{enabled = false}}; |
| 172 | + |
160 | 173 | handle_call(_Request, _From, State) -> |
161 | 174 | {noreply, State}. |
162 | 175 |
|
@@ -236,14 +249,14 @@ parse_free_win32(CommandResult) -> |
236 | 249 | [{capture, all_but_first, list}]), |
237 | 250 | list_to_integer(lists:reverse(Free)). |
238 | 251 |
|
239 | | -interpret_limit({mem_relative, Relative}) |
| 252 | +interpret_limit({mem_relative, Relative}) |
240 | 253 | when is_number(Relative) -> |
241 | 254 | round(Relative * vm_memory_monitor:get_total_memory()); |
242 | | -interpret_limit(Absolute) -> |
| 255 | +interpret_limit(Absolute) -> |
243 | 256 | case rabbit_resource_monitor_misc:parse_information_unit(Absolute) of |
244 | 257 | {ok, ParsedAbsolute} -> ParsedAbsolute; |
245 | 258 | {error, parse_error} -> |
246 | | - rabbit_log:error("Unable to parse disk_free_limit value ~p", |
| 259 | + rabbit_log:error("Unable to parse disk_free_limit value ~p", |
247 | 260 | [Absolute]), |
248 | 261 | ?DEFAULT_DISK_FREE_LIMIT |
249 | 262 | end. |
|
0 commit comments