diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2010-10-25 17:03:57 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2010-10-25 17:03:57 +0100 |
commit | fe9f8e23de8f28190b5336e0a7ba933b744853e2 (patch) | |
tree | ba740b204e75d910addfba9873f99a7bf029a5a6 | |
parent | 71b0e77815e791ede56e479a8550684b5fd5804e (diff) | |
download | rabbitmq-server-fe9f8e23de8f28190b5336e0a7ba933b744853e2.tar.gz |
Various stylistic tweaks + cleanups
-rw-r--r-- | src/rabbit_upgrade.erl | 42 | ||||
-rw-r--r-- | src/rabbit_upgrade_functions.erl | 6 |
2 files changed, 23 insertions, 25 deletions
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl index 62658fbb..f1af8bcb 100644 --- a/src/rabbit_upgrade.erl +++ b/src/rabbit_upgrade.erl @@ -37,7 +37,7 @@ -define(VERSION_FILENAME, "schema_version"). -define(LOCK_FILENAME, "schema_upgrade_lock"). -%% API --------------------------------------------------------------- +%% ------------------------------------------------------------------- %% Try to upgrade the schema. If no information on the existing schema could %% be found, do nothing. rabbit_mnesia:check_schema_integrity() will catch the @@ -46,15 +46,16 @@ maybe_upgrade(Dir) -> case rabbit_misc:read_term_file(schema_filename(Dir)) of {ok, [CurrentHeads]} -> G = load_graph(), - case check_unknown_heads(CurrentHeads, G) of - ok -> + case unknown_heads(CurrentHeads, G) of + [] -> Upgrades = upgrades_to_apply(CurrentHeads, G), case length(Upgrades) of 0 -> ok; _ -> apply_upgrades(Upgrades, Dir) end; - _ -> - ok + Unknown -> + [warn("Data store has had future upgrade ~w applied." ++ + " Will not upgrade.~n", [U]) || U <- Unknown] end, digraph:delete(G), ok; @@ -68,14 +69,14 @@ write_version(Dir) -> digraph:delete(G), ok. -%% Graphs ------------------------------------------------------------ +%% ------------------------------------------------------------------- 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, {Module, StepName}); - _ -> throw({duplicate_upgrade, StepName}) + _ -> exit({duplicate_upgrade, StepName}) end || {Module, StepName, _Requires} <- Upgrades], lists:foreach(fun ({_Module, Upgrade, Requires}) -> @@ -84,22 +85,19 @@ load_graph() -> G. add_edges(G, Requires, Upgrade) -> - Results = [digraph:add_edge(G, R, Upgrade) || R <- Requires], - case [E || {error, _} = E <- Results] of - [] -> ok; - L -> exit(L) - end. + [add_edge(G, Require, Upgrade) || Require <- Requires]. -check_unknown_heads(Heads, G) -> - case [H || H <- Heads, digraph:vertex(G, H) =:= false] of - [] -> - ok; - Unknown -> - [warn("Data store has had future upgrade ~w applied. Will not " ++ - "upgrade.~n", [U]) || U <- Unknown], - Unknown +add_edge(G, Require, Upgrade) -> + case digraph:add_edge(G, Require, Upgrade) of + {error, E} -> + exit(E); + _ -> + ok end. +unknown_heads(Heads, G) -> + [H || H <- Heads, digraph:vertex(G, H) =:= false]. + upgrades_to_apply(Heads, G) -> Unsorted = sets:to_list( sets:subtract( @@ -114,7 +112,7 @@ upgrades_to_apply(Heads, G) -> heads(G) -> [V || V <- digraph:vertices(G), digraph:out_degree(G, V) =:= 0]. -%% Upgrades----------------------------------------------------------- +%% ------------------------------------------------------------------- apply_upgrades(Upgrades, Dir) -> LockFile = lock_filename(Dir), @@ -137,7 +135,7 @@ apply_upgrade({M, F}) -> info("Upgrades: Applying ~w:~w~n", [M, F]), apply(M, F, []). -%% Utils ------------------------------------------------------------- +%% ------------------------------------------------------------------- schema_filename(Dir) -> filename:join(Dir, ?VERSION_FILENAME). diff --git a/src/rabbit_upgrade_functions.erl b/src/rabbit_upgrade_functions.erl index dfd22aea..53a1624e 100644 --- a/src/rabbit_upgrade_functions.erl +++ b/src/rabbit_upgrade_functions.erl @@ -47,7 +47,7 @@ remove_user_scope() -> {atomic, ok} = mnesia:transform_table( rabbit_user_permission, - fun(Perm = #user_permission{ + fun (Perm = #user_permission{ permission = {permission, _Scope, Conf, Write, Read}}) -> Perm#user_permission{ permission = #permission2{configure = Conf, @@ -59,7 +59,7 @@ remove_user_scope() -> test_add_column() -> {atomic, ok} = mnesia:transform_table( rabbit_user, - fun({user, Username, Password, Admin}) -> + fun ({user, Username, Password, Admin}) -> {user, Username, Password, Admin, something_else} end, [username, password, is_admin, something]). @@ -67,7 +67,7 @@ test_add_column() -> test_remove_column() -> {atomic, ok} = mnesia:transform_table( rabbit_user, - fun({user, Username, Password, Admin, _SomethingElse}) -> + fun ({user, Username, Password, Admin, _SomethingElse}) -> {user, Username, Password, Admin} end, record_info(fields, user)). |