diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2012-12-05 13:01:58 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2012-12-05 13:01:58 +0000 |
commit | 1f8ce4db2177b3652995c94960082b88dd3b0861 (patch) | |
tree | 4e233ad47f6a53c9c12cf7bff459ca12cec00c0b | |
parent | 92aa87030a88df36935df3b0d71333c6069db5f2 (diff) | |
download | rabbitmq-server-1f8ce4db2177b3652995c94960082b88dd3b0861.tar.gz |
Move the version check fun to misc, and anchor the regex.
-rw-r--r-- | src/rabbit_misc.erl | 12 | ||||
-rw-r--r-- | src/rabbit_mnesia.erl | 11 |
2 files changed, 13 insertions, 10 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 81bb6769..70ab6c71 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -46,6 +46,7 @@ -export([sort_field_table/1]). -export([pid_to_string/1, string_to_pid/1]). -export([version_compare/2, version_compare/3]). +-export([version_minor_equivalent/2]). -export([dict_cons/3, orddict_cons/3, gb_trees_cons/3]). -export([gb_trees_fold/3, gb_trees_foreach/2]). -export([parse_arguments/3]). @@ -191,6 +192,7 @@ -spec(version_compare/3 :: (string(), string(), ('lt' | 'lte' | 'eq' | 'gte' | 'gt')) -> boolean()). +-spec(version_minor_equivalent/2 :: (string(), string()) -> boolean()). -spec(dict_cons/3 :: (any(), any(), dict()) -> dict()). -spec(orddict_cons/3 :: (any(), any(), orddict:orddict()) -> orddict:orddict()). -spec(gb_trees_cons/3 :: (any(), any(), gb_tree()) -> gb_tree()). @@ -734,6 +736,16 @@ version_compare(A, B) -> ANum > BNum -> gt end. +%% a.b.c and a.b.d match, but a.b.c and a.d.e don't. If +%% versions do not match that pattern, just compare them. +version_minor_equivalent(A, B) -> + {ok, RE} = re:compile("^(\\d+\\.\\d+)(\\.\\d+)*\$"), + Opts = [{capture, all_but_first, list}], + case {re:run(A, RE, Opts), re:run(B, RE, Opts)} of + {{match, [A1|_]}, {match, [B1|_]}} -> A1 =:= B1; + _ -> A =:= B + end. + dropdot(A) -> lists:dropwhile(fun (X) -> X =:= $. end, A). dict_cons(Key, Value, Dict) -> diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index de288224..779ac073 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -775,16 +775,7 @@ check_otp_consistency(Remote) -> check_rabbit_consistency(Remote) -> check_version_consistency( rabbit_misc:version(), Remote, "Rabbit", - fun(A, B) -> - %% a.b.c and a.b.d match, but a.b.c and a.d.e don't. If - %% versions do not match that pattern, just compare them. - {ok, RE} = re:compile("(\\d+\\.\\d+)(\\.\\d+)*"), - Opts = [{capture, all_but_first, list}], - case {re:run(A, RE, Opts), re:run(B, RE, Opts)} of - {{match, [A1|_]}, {match, [B1|_]}} -> A1 =:= B1; - _ -> A =:= B - end - end). + fun rabbit_misc:version_minor_equivalent/2). %% This is fairly tricky. We want to know if the node is in the state %% that a `reset' would leave it in. We cannot simply check if the |