diff options
author | Michael Klishin <michael@rabbitmq.com> | 2014-06-29 22:16:09 +0400 |
---|---|---|
committer | Michael Klishin <michael@rabbitmq.com> | 2014-06-29 22:16:09 +0400 |
commit | 5c595f5966b41970ef603e4140473e9313e5cfb7 (patch) | |
tree | 172c9c906ba6af1796fde45cbee0e656d69a011b | |
parent | bafc5105101443fa465c5543eaf861a4cec18276 (diff) | |
parent | 5beac0266368129f1246bfa7a979f346f4a45382 (diff) | |
download | rabbitmq-server-5c595f5966b41970ef603e4140473e9313e5cfb7.tar.gz |
merge heads
-rw-r--r-- | src/rabbit_control_main.erl | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/src/rabbit_control_main.erl b/src/rabbit_control_main.erl index 1b36f73a..00381224 100644 --- a/src/rabbit_control_main.erl +++ b/src/rabbit_control_main.erl @@ -114,8 +114,10 @@ {"Policies", rabbit_policy, list_formatted, info_keys}, {"Parameters", rabbit_runtime_parameters, list_formatted, info_keys}]). --define(COMMANDS_THAT_DO_NOT_REQUIRE_RABBIT_APP_TO_BE_RUNNING, - [start_app, stop_app, status, cluster_status, environment, eval, rotate_logs]). +-define(COMMANDS_NOT_REQUIRING_APP, + [stop, stop_app, start_app, wait, reset, force_reset, rotate_logs, + join_cluster, change_cluster_node_type, update_cluster_nodes, + forget_cluster_node, cluster_status, status, environment, eval]). %%---------------------------------------------------------------------------- @@ -143,12 +145,9 @@ start() -> end, Quiet = proplists:get_bool(?QUIET_OPT, Opts), Node = proplists:get_value(?NODE_OPT, Opts), - case lists:member(Command, ?COMMANDS_THAT_DO_NOT_REQUIRE_RABBIT_APP_TO_BE_RUNNING) of - true -> - ok; - false -> - quit_if_rabbit_app_is_not_running(Node), - ok + case lists:member(Command, ?COMMANDS_NOT_REQUIRING_APP) of + false -> ensure_app_running(Node); + true -> ok end, Inform = case Quiet of true -> fun (_Format, _Args1) -> ok end; @@ -732,16 +731,21 @@ unsafe_rpc(Node, Mod, Fun, Args) -> Normal -> Normal end. -quit_if_rabbit_app_is_not_running(Node) -> - case rabbit:is_running(Node) of - true -> - ok; - false -> - fmt_stderr("rabbit app is not running on node ~s, " - "please start it with rabbitmqctl start_app " - "and try again", - [Node]), - rabbit_misc:quit(2) +ensure_app_running(Node) -> + case rpc:call(Node, application, which_applications, [5000]) of + {badrpc, Reason} -> + fail_on_badrpc(Node, Reason); + Apps -> + case proplists:is_defined(rabbit, Apps) of + true -> + ok; + false -> + fmt_stderr("rabbit app is not running on node ~s, " + "please start it with rabbitmqctl start_app " + "and try again", + [Node]), + rabbit_misc:quit(2) + end end. call(Node, {Mod, Fun, Args}) -> |