diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2015-12-24 02:45:56 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2015-12-24 02:45:56 +0300 |
| commit | 4109fb828d8faf07412d298547c9777603e15f45 (patch) | |
| tree | 046555115616197a76b54869ac6714575a6bd5b5 | |
| parent | 30324f811866ba88b8c02005a7232865108c672f (diff) | |
| parent | 0e2dccc019071b9e52b86fce32f752c0fa78d1d5 (diff) | |
| download | rabbitmq-server-git-4109fb828d8faf07412d298547c9777603e15f45.tar.gz | |
Merge branch 'stable'
| -rw-r--r-- | src/rabbit_mnesia.erl | 25 | ||||
| -rw-r--r-- | src/rabbit_version.erl | 31 |
2 files changed, 33 insertions, 23 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index 9ef37d3c48..408154ebb3 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -610,7 +610,7 @@ check_cluster_consistency(Node, CheckNodesConsistency) -> end; {_OTP, Rabbit, _Hash, _Status} -> %% delegate hash checking implies version mismatch - version_error("Rabbit", rabbit_misc:version(), Rabbit) + rabbit_version:version_error("Rabbit", rabbit_misc:version(), Rabbit) end. %%-------------------------------------------------------------------- @@ -765,12 +765,12 @@ change_extra_db_nodes(ClusterNodes0, CheckOtherNodes) -> check_consistency(OTP, Rabbit) -> rabbit_misc:sequence_error( - [check_otp_consistency(OTP), + [rabbit_version:check_otp_consistency(OTP), check_rabbit_consistency(Rabbit)]). check_consistency(OTP, Rabbit, Node, Status) -> rabbit_misc:sequence_error( - [check_otp_consistency(OTP), + [rabbit_version:check_otp_consistency(OTP), check_rabbit_consistency(Rabbit), check_nodes_consistency(Node, Status)]). @@ -785,25 +785,8 @@ check_nodes_consistency(Node, RemoteStatus = {RemoteAllNodes, _, _}) -> [node(), Node, Node])}} end. -check_version_consistency(This, Remote, Name) -> - check_version_consistency(This, Remote, Name, fun (A, B) -> A =:= B end). - -check_version_consistency(This, Remote, Name, Comp) -> - case Comp(This, Remote) of - true -> ok; - false -> version_error(Name, This, Remote) - end. - -version_error(Name, This, Remote) -> - {error, {inconsistent_cluster, - rabbit_misc:format("~s version mismatch: local node is ~s, " - "remote node ~s", [Name, This, Remote])}}. - -check_otp_consistency(Remote) -> - check_version_consistency(rabbit_misc:otp_release(), Remote, "OTP"). - check_rabbit_consistency(Remote) -> - check_version_consistency( + rabbit_version:check_version_consistency( rabbit_misc:version(), Remote, "Rabbit", fun rabbit_misc:version_minor_equivalent/2). diff --git a/src/rabbit_version.erl b/src/rabbit_version.erl index d3b2be1b50..19fc36342e 100644 --- a/src/rabbit_version.erl +++ b/src/rabbit_version.erl @@ -18,7 +18,9 @@ -export([recorded/0, matches/2, desired/0, desired_for_scope/1, record_desired/0, record_desired_for_scope/1, - upgrades_required/1]). + upgrades_required/1, check_version_consistency/3, + check_version_consistency/4, check_otp_consistency/1, + version_error/3]). %% ------------------------------------------------------------------- -ifdef(use_specs). @@ -40,7 +42,13 @@ (scope()) -> rabbit_types:ok_or_error(any())). -spec(upgrades_required/1 :: (scope()) -> rabbit_types:ok_or_error2([step()], any())). - +-spec(check_version_consistency/3 :: + (string(), string(), string()) -> rabbit_types:ok_or_error(any())). +-spec(check_version_consistency/4 :: + (string(), string(), string(), string()) -> + rabbit_types:ok_or_error(any())). +-spec(check_otp_consistency/1 :: + (string()) -> rabbit_types:ok_or_error(any())). -endif. %% ------------------------------------------------------------------- @@ -173,3 +181,22 @@ categorise_by_scope(Version) when is_list(Version) -> dir() -> rabbit_mnesia:dir(). schema_filename() -> filename:join(dir(), ?VERSION_FILENAME). + +%% -------------------------------------------------------------------- + +check_version_consistency(This, Remote, Name) -> + check_version_consistency(This, Remote, Name, fun (A, B) -> A =:= B end). + +check_version_consistency(This, Remote, Name, Comp) -> + case Comp(This, Remote) of + true -> ok; + false -> version_error(Name, This, Remote) + end. + +version_error(Name, This, Remote) -> + {error, {inconsistent_cluster, + rabbit_misc:format("~s version mismatch: local node is ~s, " + "remote node ~s", [Name, This, Remote])}}. + +check_otp_consistency(Remote) -> + check_version_consistency(rabbit_misc:otp_release(), Remote, "OTP"). |
