summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-01-12 12:54:12 +0000
committerSimon MacMullen <simon@rabbitmq.com>2011-01-12 12:54:12 +0000
commitbc892dbf91c4df178c8319c375317bed343e5783 (patch)
tree6b51de67ab034277146928f4d8463a3ea1436053 /src
parent7db95ec69b5766c8f38ab5f03d9b42e57cbf6c50 (diff)
downloadrabbitmq-server-git-bc892dbf91c4df178c8319c375317bed343e5783.tar.gz
Detect old-style versions properly.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_upgrade.erl12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index dcbffd03bc..a570df4a4e 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -159,9 +159,9 @@ maybe_upgrade(Scope) ->
read_version() ->
case rabbit_misc:read_term_file(schema_filename()) of
- {ok, [V]} -> case orddict:find(mnesia, V) of
- error -> {ok, convert_old_version(V)};
- _ -> {ok, V}
+ {ok, [V]} -> case is_orddict(V) of
+ false -> {ok, convert_old_version(V)};
+ true -> {ok, V}
end;
{error, _} = Err -> Err
end.
@@ -315,3 +315,9 @@ 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).
+
+%% This doesn't check it's ordered but that's not needed for our purposes
+is_orddict(Thing) ->
+ is_list(Thing) andalso
+ lists:all(fun(Item) -> is_tuple(Item) andalso size(Item) == 2 end,
+ Thing).