]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: session: add the necessary functions to update the per-session glitches
authorWilly Tarreau <w@1wt.eu>
Fri, 19 Jan 2024 16:25:18 +0000 (17:25 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 8 Feb 2024 14:51:49 +0000 (15:51 +0100)
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
src/session.c

index 38335e4a51608b6f43d67da6c15908b8e6b2c2be..5b080893e9b671ab35571b3f5aa40534f3aff871 100644 (file)
@@ -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 <inc> 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)
index ce9ccbfd7eedafa9f7b520be551ffb5a612978cc..b85797a11b060d4a36c1918321c3539c072e9565 100644 (file)
@@ -520,6 +520,18 @@ int conn_complete_session(struct connection *conn)
        return -1;
 }
 
+/* Add <inc> to the number of cumulated glitches in the tracked counters for
+ * session <sess> 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