summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2017-05-04 10:48:23 +0200
committerMichael Klishin <michael@clojurewerkz.org>2017-05-04 10:48:23 +0200
commit02669ff2978349fbc4accb34e69d8c3fd689e94c (patch)
tree712e2d01314be4ece409721ae08b18e8a2ad8a0f /src
parent6b13679b725ec12aee2569f07ac15618eb99a34b (diff)
downloadrabbitmq-server-git-02669ff2978349fbc4accb34e69d8c3fd689e94c.tar.gz
Pick a random value over the range in ms
Per suggestion from @binarin. This way the chance of two or more nodes ending up with the same delay value is lower than when a random value is picked from the range in seconds. Think 1 in 10 vs. 1 in 10000.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_peer_discovery.erl26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/rabbit_peer_discovery.erl b/src/rabbit_peer_discovery.erl
index ac254104f7..088f1c88fd 100644
--- a/src/rabbit_peer_discovery.erl
+++ b/src/rabbit_peer_discovery.erl
@@ -119,7 +119,7 @@ maybe_inject_randomized_delay() ->
-spec inject_randomized_delay() -> ok.
inject_randomized_delay() ->
- {Min, Max} = case randomized_delay_range() of
+ {Min, Max} = case randomized_delay_range_in_ms() of
{A, B} -> {A, B};
[A, B] -> {A, B}
end,
@@ -133,25 +133,27 @@ inject_randomized_delay() ->
{_, N} when is_number(N) ->
rand:seed(exsplus),
RandomVal = rand:uniform(round(N)),
- rabbit_log:debug("Randomized startup delay: configured range is from ~p to ~p, PRNG pick: ~p...", [Min, Max, RandomVal]),
+ rabbit_log:debug("Randomized startup delay: configured range is from ~p to ~p milliseconds, PRNG pick: ~p...",
+ [Min, Max, RandomVal]),
Effective = case RandomVal < Min of
true -> Min;
false -> RandomVal
end,
- rabbit_log:info("Will wait for ~p seconds before proceeding with regitration...", [Effective]),
- timer:sleep(Effective * 1000),
+ rabbit_log:info("Will wait for ~p milliseconds before proceeding with regitration...", [Effective]),
+ timer:sleep(Effective),
ok
end.
--spec randomized_delay_range() -> {integer(), integer()}.
+-spec randomized_delay_range_in_ms() -> {integer(), integer()}.
-randomized_delay_range() ->
- case application:get_env(rabbit, autocluster) of
- {ok, Proplist} ->
- proplists:get_value(randomized_startup_delay_range, Proplist, ?DEFAULT_STARTUP_RANDOMIZED_DELAY);
- undefined ->
- ?DEFAULT_STARTUP_RANDOMIZED_DELAY
- end.
+randomized_delay_range_in_ms() ->
+ {Min, Max} = case application:get_env(rabbit, autocluster) of
+ {ok, Proplist} ->
+ proplists:get_value(randomized_startup_delay_range, Proplist, ?DEFAULT_STARTUP_RANDOMIZED_DELAY);
+ undefined ->
+ ?DEFAULT_STARTUP_RANDOMIZED_DELAY
+ end,
+ {Min * 1000, Max * 1000}.
-spec register() -> ok.