diff options
| author | Tim Watson <watson.timothy@gmail.com> | 2014-03-28 13:46:10 +0000 |
|---|---|---|
| committer | Tim Watson <watson.timothy@gmail.com> | 2014-03-28 13:46:10 +0000 |
| commit | b809cbf1b9c099ddb44a359a426a4411501cafff (patch) | |
| tree | bff9fd3e848e8cc4509ed2d5707cfd7a0de6bb25 /src | |
| parent | 76bf5a2869a908a8f128b751bfcdf0c659ebc91d (diff) | |
| download | rabbitmq-server-git-b809cbf1b9c099ddb44a359a426a4411501cafff.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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 14 | ||||
| -rw-r--r-- | src/rabbit_plugins.erl | 7 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index b4943a30f9..6c08520fd2 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 edb7b12f26..cc65c5699b 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() -> |
