summaryrefslogtreecommitdiff
path: root/src/rabbit_mnesia.erl
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2013-12-06 12:31:22 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2013-12-06 12:31:22 +0000
commit08c6e4053b517a54f34ccad447e7076cfcb2b16c (patch)
tree537aef66778e9bde5457c3caec2301d890a710a8 /src/rabbit_mnesia.erl
parente49c748ce7abc252fb12e7211572d21780de104e (diff)
downloadrabbitmq-server-08c6e4053b517a54f34ccad447e7076cfcb2b16c.tar.gz
Undo some changes.
Diffstat (limited to 'src/rabbit_mnesia.erl')
-rw-r--r--src/rabbit_mnesia.erl34
1 files changed, 10 insertions, 24 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 8147a91a..3a8fae7f 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -434,9 +434,10 @@ init_db(ClusterNodes, NodeType, CheckOtherNodes) ->
%% First disc node up
maybe_force_load(),
ok;
- {[_ | _], _, _} ->
+ {[AnotherNode | _], _, _} ->
%% Subsequent node in cluster, catch up
- ok = ensure_version_ok(Nodes),
+ ensure_version_ok(
+ rpc:call(AnotherNode, rabbit_version, recorded, [])),
maybe_force_load(),
ok = rabbit_table:wait_for_replicated(),
ok = rabbit_table:create_local_copy(NodeType)
@@ -638,29 +639,14 @@ schema_ok_or_move() ->
ok = create_schema()
end.
-ensure_version_ok(OtherNodes) ->
- Desired = rabbit_version:desired(),
- Fun = fun (Node, FoundMatch) ->
- case rpc:call(Node, rabbit_version, recorded, []) of
- {error, _} ->
- FoundMatch; %% Node probably isn't fully up.
- {ok, NodeVersion} ->
- case rabbit_version:compare(Desired, NodeVersion) of
- eq ->
- true;
- gt ->
- FoundMatch; %% Remote is just older than us.
- _ ->
- throw({error, {version_mismatch,
- Desired, NodeVersion}})
- end
- end
- end,
- FoundMatch = lists:foldl(Fun, false, OtherNodes),
- case FoundMatch of
+ensure_version_ok({ok, DiscVersion}) ->
+ DesiredVersion = rabbit_version:desired(),
+ case rabbit_version:matches(DesiredVersion, DiscVersion) of
true -> ok;
- false -> throw({error, {version_mismatch, Desired}})
- end.
+ false -> throw({error, {version_mismatch, DesiredVersion, DiscVersion}})
+ end;
+ensure_version_ok({error, _}) ->
+ ok = rabbit_version:record_desired().
%% We only care about disc nodes since ram nodes are supposed to catch
%% up only