summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2015-12-09 08:04:29 -0800
committerMichael Klishin <michael@clojurewerkz.org>2015-12-09 08:04:29 -0800
commit99c68002bfd87e5ee1a08dee0c777832f39f95af (patch)
treebed97fff8666cc204ea6698ad664a16c3c92fa10 /src
parent81834de912bce65f5a3cd9a77b9e137a8cef0570 (diff)
parent497ad281afc4af593e5bfacf53100e3da6cb1c76 (diff)
downloadrabbitmq-server-git-99c68002bfd87e5ee1a08dee0c777832f39f95af.tar.gz
Merge branch 'master' into rabbitmq-server-479
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_control_main.erl26
-rw-r--r--src/rabbit_resource_monitor_misc.erl6
-rw-r--r--src/rabbit_upgrade.erl9
3 files changed, 35 insertions, 6 deletions
diff --git a/src/rabbit_control_main.erl b/src/rabbit_control_main.erl
index 91a079da93..c064e82ac6 100644
--- a/src/rabbit_control_main.erl
+++ b/src/rabbit_control_main.erl
@@ -88,6 +88,7 @@
{trace_on, [?VHOST_DEF]},
{trace_off, [?VHOST_DEF]},
set_vm_memory_high_watermark,
+ set_disk_free_limit,
help
]).
@@ -426,6 +427,27 @@ action(set_vm_memory_high_watermark, Node, ["absolute", Arg], _Opts, Inform) ->
{error_string, "Unable to parse absolute memory limit value ~p", [Arg]}
end;
+action(set_disk_free_limit, Node, [Arg], _Opts, Inform) ->
+ case rabbit_resource_monitor_misc:parse_information_unit(Arg) of
+ {ok, Limit} ->
+ Inform("Setting disk free limit on ~p to ~p bytes", [Node, Limit]),
+ rpc_call(Node, rabbit_disk_monitor, set_disk_free_limit, [Limit]);
+ {error, parse_error} ->
+ {error_string, "Unable to parse disk free limit value ~p", [Arg]}
+ end;
+
+action(set_disk_free_limit, Node, ["mem_relative", Arg], _Opts, Inform) ->
+ Frac = list_to_float(case string:chr(Arg, $.) of
+ 0 -> Arg ++ ".0";
+ _ -> Arg
+ end),
+ Inform("Setting disk free limit on ~p to ~p of total RAM", [Node, Frac]),
+ rpc_call(Node,
+ rabbit_disk_monitor,
+ set_disk_free_limit,
+ [{mem_relative, Frac}]);
+
+
action(set_permissions, Node, [Username, CPerm, WPerm, RPerm], Opts, Inform) ->
VHost = proplists:get_value(?VHOST_OPT, Opts),
Inform("Setting permissions for user \"~s\" in vhost \"~s\"",
@@ -667,10 +689,10 @@ read_pid_file(PidFile, Wait) ->
become(BecomeNode) ->
error_logger:tty(false),
- ok = net_kernel:stop(),
case net_adm:ping(BecomeNode) of
pong -> exit({node_running, BecomeNode});
- pang -> io:format(" * Impersonating node: ~s...", [BecomeNode]),
+ pang -> ok = net_kernel:stop(),
+ io:format(" * Impersonating node: ~s...", [BecomeNode]),
{ok, _} = rabbit_cli:start_distribution(BecomeNode),
io:format(" done~n", []),
Dir = mnesia:system_info(directory),
diff --git a/src/rabbit_resource_monitor_misc.erl b/src/rabbit_resource_monitor_misc.erl
index 88f3bd1121..f90b8ce310 100644
--- a/src/rabbit_resource_monitor_misc.erl
+++ b/src/rabbit_resource_monitor_misc.erl
@@ -30,10 +30,12 @@ parse_information_unit(Value) when is_integer(Value) -> {ok, Value};
parse_information_unit(Value) when is_list(Value) ->
case re:run(Value,
"^(?<VAL>[0-9]+)(?<UNIT>kB|KB|MB|GB|kb|mb|gb|Kb|Mb|Gb|kiB|KiB|MiB|GiB|kib|mib|gib|KIB|MIB|GIB|k|K|m|M|g|G)?$",
- [{capture, all_names, list}]) of
+ [{capture, all_but_first, list}]) of
{match, [[], _]} ->
{ok, list_to_integer(Value)};
- {match, [Unit, Num]} ->
+ {match, [Num]} ->
+ {ok, list_to_integer(Num)};
+ {match, [Num, Unit]} ->
Multiplier = case Unit of
KiB when KiB =:= "k"; KiB =:= "kiB"; KiB =:= "K"; KiB =:= "KIB"; KiB =:= "kib" -> 1024;
MiB when MiB =:= "m"; MiB =:= "MiB"; MiB =:= "M"; MiB =:= "MIB"; MiB =:= "mib" -> 1024*1024;
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index daf39b8acc..0a85ef3e7d 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -100,7 +100,12 @@ ensure_backup_taken() ->
false -> ok = take_backup();
_ -> ok
end;
- true -> throw({error, previous_upgrade_failed})
+ true ->
+ error("Found lock file at ~s.
+ Either previous upgrade is in progress or has failed.
+ Database backup path: ~s",
+ [lock_filename(), backup_dir()]),
+ throw({error, previous_upgrade_failed})
end.
take_backup() ->
@@ -108,7 +113,7 @@ take_backup() ->
case rabbit_mnesia:copy_db(BackupDir) of
ok -> info("upgrades: Mnesia dir backed up to ~p~n",
[BackupDir]);
- {error, E} -> throw({could_not_back_up_mnesia_dir, E})
+ {error, E} -> throw({could_not_back_up_mnesia_dir, E, BackupDir})
end.
ensure_backup_removed() ->