diff options
| author | Tim Watson <tim@rabbitmq.com> | 2012-05-04 11:18:53 +0100 |
|---|---|---|
| committer | Tim Watson <tim@rabbitmq.com> | 2012-05-04 11:18:53 +0100 |
| commit | a59ac79a6f0393cbe59c5afb51cb5be703485a61 (patch) | |
| tree | 49a8556e3913459b5a55e1be96c9b72f3cb981dd /src/rabbit.erl | |
| parent | 9d138b35a0a38144f0f475a6cbf7d31af9de2b93 (diff) | |
| download | rabbitmq-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.erl | 33 |
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()). |
