BUG/MINOR: peers: Wrong "new_conn" value for "show peers" CLI command.
authorFrédéric Lécaille <flecaille@haproxy.com>
Mon, 18 Jan 2021 14:14:39 +0000 (15:14 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 26 Jan 2021 09:10:02 +0000 (10:10 +0100)
This counter could be hugely incremented by the peer task responsible of managing
peer synchronizations and reconnections, for instance when a peer is not reachable
there is a period where the appctx is not created. If we receive  stick-table
updates before the peer session (appctx) is instantiated, we reach the code
responsible of incrementing the "new_conn" counter.
With this patch we increment this counter only when we really instantiate a new
peer session thanks to peer_session_create().

May be backported as far as 2.0.

(cherry picked from commit 2b0ba54ddb7d555bd0116eb8278b37ac409e7779)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>

src/peers.c

index a38fc3c..d369b08 100644 (file)
@@ -2804,6 +2804,7 @@ static struct appctx *peer_session_create(struct peers *peers, struct peer *peer
        struct session *sess;
        struct stream *s;
 
+       peer->new_conn++;
        peer->reconnect = tick_add(now_ms, MS_TO_TICKS(PEER_RECONNECT_TIMEOUT));
        peer->heartbeat = TICK_ETERNITY;
        peer->statuscode = PEER_SESS_SC_CONNECTCODE;
@@ -2928,7 +2929,6 @@ static struct task *process_peer_sync(struct task * task, void *context, unsigne
 
                                                /* reschedule task for reconnect */
                                                task->expire = tick_first(task->expire, ps->reconnect);
-                                               ps->new_conn++;
                                        }
                                        /* else do nothing */
                                } /* !ps->appctx */