summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2012-03-28 15:36:34 +0100
committerEmile Joubert <emile@rabbitmq.com>2012-03-28 15:36:34 +0100
commit28157224989b3d8c5d8dd1ee9e340ff7980cf53e (patch)
tree9e8003f03180a5139153f778a18f74a533fb223d /src
parent82a85e8657026778bc176415814f7f11a95428a4 (diff)
downloadrabbitmq-server-git-28157224989b3d8c5d8dd1ee9e340ff7980cf53e.tar.gz
Separate alarm from disk monitor and disk free status reporting
Diffstat (limited to 'src')
-rw-r--r--src/rabbit.erl4
-rw-r--r--src/rabbit_alarm.erl9
-rw-r--r--src/rabbit_disk_monitor.erl19
-rw-r--r--src/rabbit_sup.erl24
4 files changed, 31 insertions, 25 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 32e4af68a2..eec7e34e8e 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -329,7 +329,9 @@ status() ->
{vm_memory_limit, {vm_memory_monitor,
get_memory_limit, []}},
{disk_free_limit, {rabbit_disk_monitor,
- get_disk_free_limit, []}}]),
+ get_disk_free_limit, []}},
+ {disk_free, {rabbit_disk_monitor,
+ get_disk_free, []}}]),
S3 = rabbit_misc:with_exit_handler(
fun () -> [] end,
fun () -> [{file_descriptors, file_handle_cache:info()}] end),
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index 6e780218a5..6c23679294 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -48,15 +48,6 @@ start() ->
{ok, DiskLimit} = application:get_env(disk_free_limit),
rabbit_sup:start_restartable_child(rabbit_disk_monitor, [DiskLimit]),
- case {vm_memory_monitor:get_total_memory(),
- rabbit_disk_monitor:get_disk_free()} of
- {N1, N2} when is_integer(N1), is_integer(N2) ->
- ok;
- _ ->
- error_logger:warning_msg("Disabling disk free space monitoring "
- "on unsupported platform~n"),
- ok = rabbit_sup:stop_child(rabbit_disk_monitor_sup)
- end,
ok.
stop() ->
diff --git a/src/rabbit_disk_monitor.erl b/src/rabbit_disk_monitor.erl
index 5f79d669a4..b22e5585cb 100644
--- a/src/rabbit_disk_monitor.erl
+++ b/src/rabbit_disk_monitor.erl
@@ -78,11 +78,20 @@ start_link(Args) ->
init([Limit]) ->
TRef = start_timer(?DEFAULT_DISK_CHECK_INTERVAL),
- State = #state { dir = dir(),
+ Dir = dir(),
+ State = #state { dir = Dir,
timeout = ?DEFAULT_DISK_CHECK_INTERVAL,
timer = TRef,
alarmed = false},
- {ok, set_disk_limits(State, Limit)}.
+ case {get_disk_free(Dir),
+ vm_memory_monitor:get_total_memory()} of
+ {N1, N2} when is_integer(N1), is_integer(N2) ->
+ {ok, set_disk_limits(State, Limit)};
+ _ ->
+ rabbit_log:info("Disabling disk free space monitoring "
+ "on unsupported platform~n"),
+ {stop, unsupported_platform}
+ end.
handle_call(get_disk_free_limit, _From, State) ->
{reply, interpret_limit(State#state.limit), State};
@@ -127,8 +136,8 @@ dir() -> rabbit_mnesia:dir().
set_disk_limits(State, Limit) ->
State1 = State#state { limit = Limit },
- error_logger:info_msg("Disk free limit set to ~pMB~n",
- [trunc(interpret_limit(Limit) / 1048576)]),
+ rabbit_log:info("Disk free limit set to ~pMB~n",
+ [trunc(interpret_limit(Limit) / 1048576)]),
internal_update(State1).
internal_update(State = #state { limit = Limit,
@@ -178,7 +187,7 @@ interpret_limit(L) ->
L.
emit_update_info(State, CurrentFree, Limit) ->
- error_logger:info_msg(
+ rabbit_log:info(
"Disk free space limit now ~s. Free bytes:~p Limit:~p~n",
[State, CurrentFree, Limit]).
diff --git a/src/rabbit_sup.erl b/src/rabbit_sup.erl
index 0965e3b36e..bf2b4798ec 100644
--- a/src/rabbit_sup.erl
+++ b/src/rabbit_sup.erl
@@ -52,22 +52,20 @@ start_child(Mod, Args) ->
start_child(Mod, Mod, Args).
start_child(ChildId, Mod, Args) ->
- {ok, _} = supervisor:start_child(?SERVER,
- {ChildId, {Mod, start_link, Args},
- transient, ?MAX_WAIT, worker, [Mod]}),
- ok.
+ child_reply(supervisor:start_child(?SERVER,
+ {ChildId, {Mod, start_link, Args},
+ transient, ?MAX_WAIT, worker, [Mod]})).
start_restartable_child(Mod) ->
start_restartable_child(Mod, []).
start_restartable_child(Mod, Args) ->
Name = list_to_atom(atom_to_list(Mod) ++ "_sup"),
- {ok, _} = supervisor:start_child(
- ?SERVER,
- {Name, {rabbit_restartable_sup, start_link,
- [Name, {Mod, start_link, Args}]},
- transient, infinity, supervisor, [rabbit_restartable_sup]}),
- ok.
+ child_reply(supervisor:start_child(
+ ?SERVER,
+ {Name, {rabbit_restartable_sup, start_link,
+ [Name, {Mod, start_link, Args}]},
+ transient, infinity, supervisor, [rabbit_restartable_sup]})).
stop_child(ChildId) ->
case supervisor:terminate_child(?SERVER, ChildId) of
@@ -77,3 +75,9 @@ stop_child(ChildId) ->
init([]) ->
{ok, {{one_for_all, 0, 1}, []}}.
+
+
+%%----------------------------------------------------------------------------
+
+child_reply({ok, _}) -> ok;
+child_reply(X) -> X.