diff options
| -rw-r--r-- | src/app_utils.erl | 7 | ||||
| -rw-r--r-- | src/rabbit.erl | 4 | ||||
| -rw-r--r-- | src/rabbit_misc.erl | 39 | ||||
| -rw-r--r-- | src/rabbit_version.erl | 5 |
4 files changed, 16 insertions, 39 deletions
diff --git a/src/app_utils.erl b/src/app_utils.erl index 56d498997f..270cdc8385 100644 --- a/src/app_utils.erl +++ b/src/app_utils.erl @@ -17,8 +17,7 @@ -export([load_applications/1, start_applications/1, start_applications/2, stop_applications/1, stop_applications/2, app_dependency_order/2, - wait_for_applications/1, app_dependencies/1, app_modules/1, - which_applications/0]). + wait_for_applications/1, app_dependencies/1, app_modules/1]). -ifdef(use_specs). @@ -32,7 +31,6 @@ -spec wait_for_applications([atom()]) -> 'ok'. -spec app_dependency_order([atom()], boolean()) -> [digraph:vertex()]. -spec app_dependencies(atom()) -> [atom()]. --spec which_applications() -> [atom()]. -spec app_modules(atom()) -> [module()]. -endif. @@ -40,9 +38,6 @@ %%--------------------------------------------------------------------------- %% Public API -which_applications() -> - [App || {App, _, _} <- rabbit_misc:which_applications()]. - app_modules(App) -> {ok, Modules} = application:get_key(App, modules), Modules. diff --git a/src/rabbit.erl b/src/rabbit.erl index 3d043b509c..9b827d8312 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -543,8 +543,8 @@ run_step(StepName, Attributes, AttributeName) -> end. load_steps(BaseApps) -> - Apps = BaseApps -- app_utils:which_applications(), %% exclude running apps - StepAttrs = rabbit_misc:all_module_attributes_with_app(rabbit_boot_step), + Apps = BaseApps -- [App || {App, _, _} <- rabbit_misc:which_applications()], + StepAttrs = rabbit_misc:all_module_attributes(rabbit_boot_step), {AllSteps, StepsDict} = lists:foldl( fun({AppName, Mod, Steps}, {AccSteps, AccDict}) -> diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 15f6ff432a..9aa433b660 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -51,7 +51,6 @@ -export([dict_cons/3, orddict_cons/3, gb_trees_cons/3]). -export([gb_trees_fold/3, gb_trees_foreach/2]). -export([parse_arguments/3]). --export([all_module_attributes_with_app/1]). -export([all_module_attributes/1, build_acyclic_graph/3]). -export([now_ms/0]). -export([const/1]). @@ -210,8 +209,7 @@ [string()]) -> {'ok', {atom(), [{string(), string()}], [string()]}} | 'no_command'). --spec(all_module_attributes/1 :: (atom()) -> [{atom(), [term()]}]). --spec(all_module_attributes_with_app/1 :: +-spec(all_module_attributes/1 :: (atom()) -> [{atom(), atom(), [term()]}]). -spec(build_acyclic_graph/3 :: (graph_vertex_fun(), graph_edge_fun(), [{atom(), [term()]}]) @@ -849,38 +847,21 @@ module_attributes(Module) -> V end. -all_module_attributes_with_app(Name) -> - find_module_attributes( - fun(App, Modules) -> - [{App, Module} || Module <- Modules] - end, - fun ({App, Module}, Acc) -> - case lists:append([Atts || {N, Atts} <- module_attributes(Module), - N =:= Name]) of - [] -> Acc; - Atts -> [{App, Module, Atts} | Acc] - end - end). - all_module_attributes(Name) -> - find_module_attributes( - fun(_App, Modules) -> Modules end, - fun (Module, Acc) -> - case lists:append([Atts || {N, Atts} <- module_attributes(Module), - N =:= Name]) of - [] -> Acc; - Atts -> [{Module, Atts} | Acc] - end - end). - -find_module_attributes(Generator, Fold) -> Targets = lists:usort( lists:append( - [Generator(App, Modules) || + [[{App, Module} || Module <- Modules] || {App, _, _} <- application:loaded_applications(), {ok, Modules} <- [application:get_key(App, modules)]])), - lists:foldl(Fold, [], Targets). + lists:foldl( + fun ({App, Module}, Acc) -> + case lists:append([Atts || {N, Atts} <- module_attributes(Module), + N =:= Name]) of + [] -> Acc; + Atts -> [{App, Module, Atts} | Acc] + end + end, [], Targets). build_acyclic_graph(VertexFun, EdgeFun, Graph) -> G = digraph:new([acyclic]), diff --git a/src/rabbit_version.erl b/src/rabbit_version.erl index c629180ef0..a9efdb4915 100644 --- a/src/rabbit_version.erl +++ b/src/rabbit_version.erl @@ -113,10 +113,11 @@ upgrades_required(Scope) -> %% ------------------------------------------------------------------- with_upgrade_graph(Fun, Scope) -> + Attrs = rabbit_misc:all_module_attributes(rabbit_upgrade), case rabbit_misc:build_acyclic_graph( fun (Module, Steps) -> vertices(Module, Steps, Scope) end, fun (Module, Steps) -> edges(Module, Steps, Scope) end, - rabbit_misc:all_module_attributes(rabbit_upgrade)) of + [{Mod, Steps} || {_, Mod, Steps} <- Attrs]) of {ok, G} -> try Fun(G) after @@ -161,7 +162,7 @@ heads(G) -> categorise_by_scope(Version) when is_list(Version) -> Categorised = - [{Scope, Name} || {_Module, Attributes} <- + [{Scope, Name} || {_App, _Module, Attributes} <- rabbit_misc:all_module_attributes(rabbit_upgrade), {Name, Scope, _Requires} <- Attributes, lists:member(Name, Version)], |
