diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2013-12-06 12:31:22 +0000 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2013-12-06 12:31:22 +0000 |
commit | 08c6e4053b517a54f34ccad447e7076cfcb2b16c (patch) | |
tree | 537aef66778e9bde5457c3caec2301d890a710a8 /src/rabbit_mnesia.erl | |
parent | e49c748ce7abc252fb12e7211572d21780de104e (diff) | |
download | rabbitmq-server-08c6e4053b517a54f34ccad447e7076cfcb2b16c.tar.gz |
Undo some changes.
Diffstat (limited to 'src/rabbit_mnesia.erl')
-rw-r--r-- | src/rabbit_mnesia.erl | 34 |
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 |