summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Watson <watson.timothy@gmail.com>2014-03-28 13:46:10 +0000
committerTim Watson <watson.timothy@gmail.com>2014-03-28 13:46:10 +0000
commita994cd8db832684b837ede757d7b2052a9593e57 (patch)
treebff9fd3e848e8cc4509ed2d5707cfd7a0de6bb25
parent49a5a1efe3237e280d80827673e6534670900758 (diff)
downloadrabbitmq-server-a994cd8db832684b837ede757d7b2052a9593e57.tar.gz
Ensure start_app considers plugins when using RABBITMQ_NODE_ONLY
- always start all enabled plugins, regardless of startup type - only disable plugins that are currently running The latter incidentally fixes bug 24941.
-rw-r--r--src/rabbit.erl14
-rw-r--r--src/rabbit_plugins.erl7
2 files changed, 13 insertions, 8 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index b4943a30..6c08520f 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -311,8 +311,7 @@ start() ->
ok = ensure_working_log_handlers(),
rabbit_node_monitor:prepare_cluster_status_files(),
rabbit_mnesia:check_cluster_consistency(),
- start_apps(app_startup_order()),
- ok = log_broker_started(rabbit_plugins:active())
+ broker_start()
end).
boot() ->
@@ -327,12 +326,15 @@ boot() ->
%% the upgrade, since if we are a secondary node the
%% primary node will have forgotten us
rabbit_mnesia:check_cluster_consistency(),
- Plugins = rabbit_plugins:setup(),
- ToBeLoaded = Plugins ++ ?APPS,
- start_apps(ToBeLoaded),
- ok = log_broker_started(Plugins)
+ broker_start()
end).
+broker_start() ->
+ Plugins = rabbit_plugins:setup(),
+ ToBeLoaded = Plugins ++ ?APPS,
+ start_apps(ToBeLoaded),
+ ok = log_broker_started(rabbit_plugins:active()).
+
handle_app_error(Term) ->
fun(App, {bad_return, {_MFA, {'EXIT', {ExitReason, _}}}}) ->
throw({Term, App, ExitReason});
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl
index edb7b12f..cc65c569 100644
--- a/src/rabbit_plugins.erl
+++ b/src/rabbit_plugins.erl
@@ -44,8 +44,11 @@ enable(Plugins) ->
ok = rabbit_event:notify(plugins_changed, [{enabled, Diff}]).
disable(Plugins) ->
- Diff = rabbit:stop_apps(Plugins),
- ok = rabbit_event:notify(plugins_changed, [{disabled, Plugins}]).
+ RunningApps = rabbit_misc:which_applications(),
+ ToDisable = [P || P <- Plugins,
+ proplists:is_defined(P, RunningApps)],
+ rabbit:stop_apps(ToDisable),
+ ok = rabbit_event:notify(plugins_changed, [{disabled, ToDisable}]).
%% @doc Prepares the file system and installs all enabled plugins.
setup() ->