diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-03-08 14:11:11 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-03-08 14:11:11 +0000 |
commit | 41ce63c6dab98f8ce0b80bfcd52d86e1a53ef23d (patch) | |
tree | f6577a5c3371cf825c096faf3ea7bec432e8187c | |
parent | f6d550f49e9e90a551ecd20e80d405068db7d781 (diff) | |
download | rabbitmq-server-41ce63c6dab98f8ce0b80bfcd52d86e1a53ef23d.tar.gz |
Don't change the version file format
-rw-r--r-- | src/rabbit_upgrade.erl | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl index f59dbdfe..8113bad8 100644 --- a/src/rabbit_upgrade.erl +++ b/src/rabbit_upgrade.erl @@ -240,50 +240,44 @@ maybe_upgrade_local() -> read_version() -> case rabbit_misc:read_term_file(schema_filename()) of - {ok, [V]} -> case is_new_version(V) of - false -> {ok, convert_old_version(V)}; - %% Write in this format for future expansion; - %% we want to allow plugins to own upgrades. - true -> [{rabbit, RV}] = V, - {ok, RV} - end; + {ok, [V]} -> {ok, V}; {error, _} = Err -> Err end. read_version(Scope) -> case read_version() of {error, _} = E -> E; - {ok, V} -> {ok, orddict:fetch(Scope, V)} + {ok, V} -> {ok, filter_by_scope(Scope, V)} end. write_version() -> - ok = rabbit_misc:write_term_file(schema_filename(), - [[{rabbit, desired_version()}]]), + ok = rabbit_misc:write_term_file(schema_filename(), [desired_version()]), ok. write_version(Scope) -> {ok, V0} = read_version(), - V = orddict:store(Scope, desired_version(Scope), V0), - ok = rabbit_misc:write_term_file(schema_filename(), [[{rabbit, V}]]), + V = flatten([case S of + Scope -> desired_version(S); + _ -> filter_by_scope(S, V0) + end || S <- ?SCOPES]), + ok = rabbit_misc:write_term_file(schema_filename(), [V]), ok. desired_version() -> - lists:foldl( - fun (Scope, Acc) -> - orddict:store(Scope, desired_version(Scope), Acc) - end, - orddict:new(), ?SCOPES). + flatten([desired_version(Scope) || Scope <- ?SCOPES]). desired_version(Scope) -> with_upgrade_graph(fun (G) -> heads(G) end, Scope). -convert_old_version(Heads) -> - Locals = [add_queue_ttl], - V0 = orddict:new(), - V1 = orddict:store(mnesia, Heads -- Locals, V0), - orddict:store(local, - lists:filter(fun(H) -> lists:member(H, Locals) end, Heads), - V1). +flatten(LoL) -> + lists:sort(lists:flatten(LoL)). + +filter_by_scope(Scope, Versions) -> + with_upgrade_graph( + fun(G) -> + ScopeVs = digraph:vertices(G), + [V || V <- Versions, lists:member(V, ScopeVs)] + end, Scope). %% ------------------------------------------------------------------- @@ -399,10 +393,3 @@ lock_filename(Dir) -> filename:join(Dir, ?LOCK_FILENAME). %% NB: we cannot use rabbit_log here since it may not have been %% started yet info(Msg, Args) -> error_logger:info_msg(Msg, Args). - -is_new_version(Version) -> - try - orddict:size(Version) > 0 - catch error:badarg -> - false - end. |