From e763c8c99f7134a009117a59e6a6002b3c9e8c84 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 5 May 2021 18:23:59 +0200 Subject: [PATCH] BUG/MINOR: stream: Decrement server current session counter on L7 retry When a L7 retry is performed, we must not forget to decrement the current session counter of the assigned server. Of course, it must only be done if the current session is already counted on the server, thus if SF_CURR_SESS flag is set on the stream. This patch is related to the issue #1003. It must be backported as far as 2.0. --- src/http_ana.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/http_ana.c b/src/http_ana.c index f662a31b9..7c5e3ff66 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -1295,8 +1295,13 @@ static __inline int do_l7_retry(struct stream *s, struct stream_interface *si) if (b_is_null(&req->buf) && !channel_alloc_buffer(req, &s->buffer_wait)) goto no_retry; - if (objt_server(s->target)) + if (objt_server(s->target)) { + if (s->flags & SF_CURR_SESS) { + s->flags &= ~SF_CURR_SESS; + _HA_ATOMIC_DEC(&__objt_server(s->target)->cur_sess); + } _HA_ATOMIC_INC(&__objt_server(s->target)->counters.retries); + } _HA_ATOMIC_INC(&s->be->be_counters.retries); /* Remove any write error from the request, and read error from the response */