summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/app_utils.erl7
-rw-r--r--src/rabbit.erl4
-rw-r--r--src/rabbit_misc.erl39
-rw-r--r--src/rabbit_version.erl5
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)],