diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2010-10-18 11:55:34 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2010-10-18 11:55:34 +0100 |
commit | dba8b31ec4a5e1497398d5e015729e9b781122cc (patch) | |
tree | 4f65ff07e74665d7df01fdbe858dcc9b9bf13b46 | |
parent | 299cfa8ee5844ec2b5da9a99d35292efcbd5b5d0 (diff) | |
download | rabbitmq-server-dba8b31ec4a5e1497398d5e015729e9b781122cc.tar.gz |
Simplify the module attribute required, log a bit more.
-rw-r--r-- | src/rabbit.erl | 8 | ||||
-rw-r--r-- | src/rabbit_upgrade.erl | 25 | ||||
-rw-r--r-- | src/rabbit_upgrades.erl | 34 |
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. |