summaryrefslogtreecommitdiff
path: root/src/rabbit.erl
diff options
context:
space:
mode:
authorTim Watson <tim@rabbitmq.com>2012-05-04 11:18:53 +0100
committerTim Watson <tim@rabbitmq.com>2012-05-04 11:18:53 +0100
commita59ac79a6f0393cbe59c5afb51cb5be703485a61 (patch)
tree49a8556e3913459b5a55e1be96c9b72f3cb981dd /src/rabbit.erl
parent9d138b35a0a38144f0f475a6cbf7d31af9de2b93 (diff)
downloadrabbitmq-server-git-a59ac79a6f0393cbe59c5afb51cb5be703485a61.tar.gz
start and start_cold both defer to rabbit_misc to calculate application load order
Diffstat (limited to 'src/rabbit.erl')
-rw-r--r--src/rabbit.erl33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 7f2845b60f..13afdc682e 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -305,9 +305,21 @@ start_cold() ->
start_it(fun() ->
ok = prepare(),
Plugins = determine_required_plugins(),
- ToBeLoaded = ?APPS ++ Plugins,
- StartupApps = application_load_order(ToBeLoaded, ToBeLoaded),
- ok = rabbit_misc:start_applications(StartupApps)
+ ToBeLoaded = Plugins ++ ?APPS,
+
+ io:format("~n"
+ "Activating RabbitMQ plugins ...~n"),
+
+ load_applications(queue:from_list(ToBeLoaded), sets:new()),
+ StartupApps =
+ rabbit_misc:calculate_app_dependency_ordering(ToBeLoaded),
+ ok = rabbit_misc:start_applications(StartupApps),
+
+ io:format("~w plugins activated:~n", [length(Plugins)]),
+ [io:format("* ~s-~s~n", [AppName,
+ element(2, application:get_key(AppName, vsn))])
+ || AppName <- Plugins],
+ io:nl()
end).
start_it(StartFun) ->
@@ -408,20 +420,7 @@ stop(_State) ->
application_load_order() ->
ok = load_applications(),
- LoadedApps = application:loaded_applications(),
- application_load_order(LoadedApps, ?APPS).
-
-application_load_order(LoadedApps, RootApps) ->
- {ok, G} = rabbit_misc:build_acyclic_graph(
- fun (App, _Deps) -> [{App, App}] end,
- fun (App, Deps) -> [{Dep, App} || Dep <- Deps] end,
- [{App, app_dependencies(App)} || App <- LoadedApps]),
- true = digraph:del_vertices(
- G, digraph:vertices(G) --
- digraph_utils:reachable(RootApps, G)),
- Result = digraph_utils:topsort(G),
- true = digraph:delete(G),
- Result.
+ rabbit_misc:calculate_app_dependency_ordering(?APPS).
load_applications() ->
load_applications(queue:from_list(?APPS), sets:new()).