From ab4b094055fee113e91149426035c9ff7b35b2b0 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 26 Jul 2022 19:14:36 +0200 Subject: [PATCH] MINOR: peers: Use a dedicated reconnect timeout when stopping the local peer When a process is stopped or reload, a dedicated reconnect timeout is now used. For now, this timeout is not used because the current code retries immediately to reconnect to perform the local synchronization with the new local peer, if any. This patch is required to fix the issue #1799. It should be backported as far as 2.0 with next fixes. --- src/peers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/peers.c b/src/peers.c index 41cf7d829..f9d8077ff 100644 --- a/src/peers.c +++ b/src/peers.c @@ -102,6 +102,7 @@ #define PEER_RESYNC_TIMEOUT 5000 /* 5 seconds */ #define PEER_RECONNECT_TIMEOUT 5000 /* 5 seconds */ +#define PEER_LOCAL_RECONNECT_TIMEOUT 500 /* 500ms */ #define PEER_HEARTBEAT_TIMEOUT 3000 /* 3 seconds */ /* flags for "show peers" */ @@ -3200,7 +3201,7 @@ static struct appctx *peer_session_create(struct peers *peers, struct peer *peer int idx; peer->new_conn++; - peer->reconnect = tick_add(now_ms, MS_TO_TICKS(PEER_RECONNECT_TIMEOUT)); + peer->reconnect = tick_add(now_ms, (stopping ? MS_TO_TICKS(PEER_LOCAL_RECONNECT_TIMEOUT) : MS_TO_TICKS(PEER_RECONNECT_TIMEOUT))); peer->heartbeat = TICK_ETERNITY; peer->statuscode = PEER_SESS_SC_CONNECTCODE; peer->last_hdshk = now_ms;