From 8581d62daf97d761ab07fffb96808958a1bbed13 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 19 Jan 2024 17:25:18 +0100 Subject: [PATCH] MINOR: session: add the necessary functions to update the per-session glitches This provides a new function session_add_glitch_ctr() that will update the glitch counter and rate for the session, if tracked at all. --- include/haproxy/session.h | 10 ++++++++++ src/session.c | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/haproxy/session.h b/include/haproxy/session.h index 38335e4a5..5b080893e 100644 --- a/include/haproxy/session.h +++ b/include/haproxy/session.h @@ -39,6 +39,8 @@ void session_free(struct session *sess); int session_accept_fd(struct connection *cli_conn); int conn_complete_session(struct connection *conn); struct task *session_expire_embryonic(struct task *t, void *context, unsigned int state); +void __session_add_glitch_ctr(struct session *sess, uint inc); + /* Remove the refcount from the session to the tracked counters, and clear the * pointer to ensure this is only performed once. The caller is responsible for @@ -123,6 +125,14 @@ static inline void session_inc_http_fail_ctr(struct session *sess) stkctr_inc_http_fail_ctr(&sess->stkctr[i]); } +/* Add to the number of cumulated glitches in the tracked counters, and + * implicitly update the rate if also tracked. + */ +static inline void session_add_glitch_ctr(struct session *sess, uint inc) +{ + if (sess->stkctr && inc) + __session_add_glitch_ctr(sess, inc); +} /* Remove the connection from the session list, and destroy the srv_list if it's now empty */ static inline void session_unown_conn(struct session *sess, struct connection *conn) diff --git a/src/session.c b/src/session.c index ce9ccbfd7..b85797a11 100644 --- a/src/session.c +++ b/src/session.c @@ -520,6 +520,18 @@ int conn_complete_session(struct connection *conn) return -1; } +/* Add to the number of cumulated glitches in the tracked counters for + * session which is known for being tracked, and implicitly update the + * rate if also tracked. + */ +void __session_add_glitch_ctr(struct session *sess, uint inc) +{ + int i; + + for (i = 0; i < global.tune.nb_stk_ctr; i++) + stkctr_add_glitch_ctr(&sess->stkctr[i], inc); +} + /* * Local variables: * c-indent-level: 8