]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: mux-h2: count glitches when they're reported
authorWilly Tarreau <w@1wt.eu>
Thu, 14 Nov 2024 07:54:32 +0000 (08:54 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 14 Nov 2024 08:01:57 +0000 (09:01 +0100)
The h2c_report_glitch() function is now replaced with a macro to support
enumerating counters for each individual glitch line. For now this adds
43 such counters. The macro supports an optional description, though that
is not being used for now. It gives outputs like this (note that the last
one was purposely instrumented to pass a description):

   > debug dev counters glt all
   0          GLT mux_h2.c:5976 h2c_dec_hdrs()
   0          GLT mux_h2.c:5960 h2c_dec_hdrs()
   (...)
   0          GLT mux_h2.c:2207 h2c_frt_recv_preface()
   0          GLT mux_h2.c:1954 h2c_frt_stream_new(): new stream too early

As a reminder, this requires to build with -DDEBUG_GLITCHES=1.

src/mux_h2.c

index b65518c0042d737603cbea2afb62ac20d2ba4108..8910a909acc384e750ad6d93fea6bd406f3adb0b 100644 (file)
@@ -1586,7 +1586,12 @@ static void __maybe_unused h2s_alert(struct h2s *h2s)
  * glitch limit was reached, in which case an error is also reported on the
  * connection.
  */
-static inline int h2c_report_glitch(struct h2c *h2c, int increment)
+#define h2c_report_glitch(h2c, inc, ...) ({            \
+               COUNT_GLITCH(__VA_ARGS__);              \
+               _h2c_report_glitch(h2c, inc);           \
+       })
+
+static inline int _h2c_report_glitch(struct h2c *h2c, int increment)
 {
        int thres = (h2c->flags & H2_CF_IS_BACK) ?
                h2_be_glitches_threshold : h2_fe_glitches_threshold;