summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-10-18 11:55:34 +0100
committerSimon MacMullen <simon@rabbitmq.com>2010-10-18 11:55:34 +0100
commitdba8b31ec4a5e1497398d5e015729e9b781122cc (patch)
tree4f65ff07e74665d7df01fdbe858dcc9b9bf13b46
parent299cfa8ee5844ec2b5da9a99d35292efcbd5b5d0 (diff)
downloadrabbitmq-server-dba8b31ec4a5e1497398d5e015729e9b781122cc.tar.gz
Simplify the module attribute required, log a bit more.
-rw-r--r--src/rabbit.erl8
-rw-r--r--src/rabbit_upgrade.erl25
-rw-r--r--src/rabbit_upgrades.erl34
3 files changed, 34 insertions, 33 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 206cb421..af3f450a 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -323,7 +323,7 @@ all_module_attributes(Name) ->
[application:get_key(App, modules)
|| App <- AllApps]])),
lists:flatmap(fun (Module) ->
- [{StepName, Attributes}
+ [{Module, StepName, Attributes}
|| {N, [{StepName, Attributes}]}
<- module_attributes(Module), N =:= Name]
end, Modules).
@@ -336,12 +336,12 @@ sort_boot_steps(UnsortedSteps) ->
%% Add vertices, with duplicate checking.
[case digraph:vertex(G, StepName) of
- false -> digraph:add_vertex(G, StepName, Step);
+ false -> digraph:add_vertex(G, StepName, {StepName, Attrs});
_ -> boot_error("Duplicate boot step name: ~w~n", [StepName])
- end || Step = {StepName, _Attrs} <- UnsortedSteps],
+ end || {_Module, StepName, Attrs} <- UnsortedSteps],
%% Add edges, detecting cycles and missing vertices.
- lists:foreach(fun ({StepName, Attributes}) ->
+ lists:foreach(fun ({_Module, StepName, Attributes}) ->
[add_boot_step_dep(G, StepName, PrecedingStepName)
|| {requires, PrecedingStepName} <- Attributes],
[add_boot_step_dep(G, SucceedingStepName, StepName)
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index acefc5b4..72f3b660 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -49,10 +49,12 @@ maybe_upgrade(Dir) ->
case check_unknown_heads(CurrentHeads, G) of
ok ->
Upgrades = upgrades_to_apply(CurrentHeads, G),
- [apply_upgrade(Upgrade) || Upgrade <- Upgrades],
case length(Upgrades) of
0 -> ok;
- _ -> write_version(Dir)
+ L -> info("Upgrades: ~w to apply~n", [L]),
+ [apply_upgrade(Upgrade) || Upgrade <- Upgrades],
+ info("Upgrades: All applied~n", []),
+ write_version(Dir)
end;
_ ->
ok
@@ -66,7 +68,8 @@ maybe_upgrade(Dir) ->
write_version(Dir) ->
G = load_graph(),
rabbit_misc:write_term_file(schema_filename(Dir), [heads(G)]),
- digraph:delete(G).
+ digraph:delete(G),
+ ok.
%% Graphs ------------------------------------------------------------
@@ -74,13 +77,12 @@ load_graph() ->
G = digraph:new([acyclic]),
Upgrades = rabbit:all_module_attributes(rabbit_upgrade),
[case digraph:vertex(G, StepName) of
- false -> digraph:add_vertex(G, StepName, Step);
+ false -> digraph:add_vertex(G, StepName, {Module, StepName});
_ -> throw({duplicate_upgrade, StepName})
- end || Step = {StepName, _Attrs} <- Upgrades],
+ end || {Module, StepName, _Requires} <- Upgrades],
- lists:foreach(fun ({Upgrade, Attributes}) ->
- [add_edges(G, Requires, Upgrade)
- || {requires, Requires} <- Attributes]
+ lists:foreach(fun ({_Module, Upgrade, Requires}) ->
+ add_edges(G, Requires, Upgrade)
end, Upgrades),
G.
@@ -117,10 +119,9 @@ heads(G) ->
%% Upgrades-----------------------------------------------------------
-apply_upgrade({Name, Props}) ->
- info("Applying upgrade ~w~n", [Name]),
- {Module, Function} = proplists:get_value(mf, Props),
- info("-> ~w:~w~n", [Module, Function]).
+apply_upgrade({M, F}) ->
+ info("Upgrades: Applying ~w:~w~n", [M, F]),
+ apply(M, F, []).
%% Utils -------------------------------------------------------------
diff --git a/src/rabbit_upgrades.erl b/src/rabbit_upgrades.erl
index 8e962b20..f6870068 100644
--- a/src/rabbit_upgrades.erl
+++ b/src/rabbit_upgrades.erl
@@ -34,27 +34,27 @@
-compile([export_all]).
--rabbit_upgrade({foo,
- [{mf, {rabbit_upgrades, foo}},
- {requires, []}]}).
+-rabbit_upgrade({foo, []}).
+-rabbit_upgrade({bar, [foo]}).
+-rabbit_upgrade({baz, [bar]}).
--rabbit_upgrade({bar,
- [{mf, {rabbit_upgrades, foo}},
- {requires, []}]}).
+-rabbit_upgrade({remove_user_scope, [foo]}).
+-rabbit_upgrade({remove_user_scope2, [remove_user_scope]}).
--rabbit_upgrade({remove_user_scope,
- [{mf, {rabbit_upgrades, remove_user_scope}},
- {requires, [foo]}]}).
-
--rabbit_upgrade({remove_user_scope2,
- [{mf, {rabbit_upgrades, foo}},
- {requires, [remove_user_scope]}]}).
-
--rabbit_upgrade({baz,
- [{mf, {rabbit_upgrades, foo}},
- {requires, [bar]}]}).
%%--------------------------------------------------------------------
+foo() ->
+ ok.
+
remove_user_scope() ->
ok.
+
+remove_user_scope2() ->
+ ok.
+
+bar() ->
+ ok.
+
+baz() ->
+ ok.