mirror of
https://github.com/zeromq/libzmq.git
synced 2025-07-03 09:15:24 +02:00
Precise reconnect interval randomised
Till now the random fraction of the reconnect interval was computed based on process ID. This patch uses pseudo-random generated (seeded by exact time of when the process was started) to compute the interval. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
This commit is contained in:
parent
ce7a9a58e3
commit
6e987428d4
@ -25,6 +25,7 @@
|
||||
#include "tcp_engine.hpp"
|
||||
#include "io_thread.hpp"
|
||||
#include "platform.hpp"
|
||||
#include "random.hpp"
|
||||
#include "ip.hpp"
|
||||
#include "err.hpp"
|
||||
|
||||
@ -154,15 +155,9 @@ void zmq::tcp_connecter_t::add_reconnect_timer()
|
||||
|
||||
int zmq::tcp_connecter_t::get_new_reconnect_ivl ()
|
||||
{
|
||||
#if defined ZMQ_HAVE_WINDOWS
|
||||
int pid = (int) GetCurrentProcessId ();
|
||||
#else
|
||||
int pid = (int) getpid ();
|
||||
#endif
|
||||
|
||||
// The new interval is the current interval + random value.
|
||||
int this_interval = current_reconnect_ivl +
|
||||
((pid * 13) % options.reconnect_ivl);
|
||||
(generate_random () % options.reconnect_ivl);
|
||||
|
||||
// Only change the current reconnect interval if the maximum reconnect
|
||||
// interval was set and if it's larger than the reconnect interval.
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "tcp_engine.hpp"
|
||||
#include "io_thread.hpp"
|
||||
#include "platform.hpp"
|
||||
#include "random.hpp"
|
||||
#include "likely.hpp"
|
||||
#include "ip.hpp"
|
||||
#include "err.hpp"
|
||||
@ -169,15 +170,9 @@ void zmq::vtcp_connecter_t::add_reconnect_timer()
|
||||
|
||||
int zmq::vtcp_connecter_t::get_new_reconnect_ivl ()
|
||||
{
|
||||
#if defined ZMQ_HAVE_WINDOWS
|
||||
int pid = (int) GetCurrentProcessId ();
|
||||
#else
|
||||
int pid = (int) getpid ();
|
||||
#endif
|
||||
|
||||
// The new interval is the current interval + random value.
|
||||
int this_interval = current_reconnect_ivl +
|
||||
((pid * 13) % options.reconnect_ivl);
|
||||
(generate_random () % options.reconnect_ivl);
|
||||
|
||||
// Only change the current reconnect interval if the maximum reconnect
|
||||
// interval was set and if it's larger than the reconnect interval.
|
||||
|
Loading…
x
Reference in New Issue
Block a user