diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2017-05-04 10:48:23 +0200 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2017-05-04 10:48:23 +0200 |
| commit | 02669ff2978349fbc4accb34e69d8c3fd689e94c (patch) | |
| tree | 712e2d01314be4ece409721ae08b18e8a2ad8a0f /src | |
| parent | 6b13679b725ec12aee2569f07ac15618eb99a34b (diff) | |
| download | rabbitmq-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.erl | 26 |
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. |
