]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: stats: protect against future stats fields omissions
authorWilly Tarreau <w@1wt.eu>
Fri, 2 Jun 2023 06:35:50 +0000 (08:35 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 2 Jun 2023 06:39:53 +0000 (08:39 +0200)
As seen in commits 33a4461fa ("BUG/MINOR: stats: Fix Lua's `get_stats`
function") and a46b142e8 ("BUG/MINOR: Missing stat_field_names (since
f21d17bb)") it seems frequent to omit to update stats_fields[] when
adding a new ST_F_xxx entry. This breaks Lua's get_stats() and shows
a "(null)" in the header of "show stat", but that one is not detectable
to the naked eye anymore.

Let's add a reminder above the enum declaration about this, and a small
reg tests checking for the absence of "(null)". It was verified to fail
before the last patch above.

include/haproxy/stats-t.h
reg-tests/webstats/missing-stats-fields.vtc [new file with mode: 0644]

index 07eaf6d5027b3e7bee5faf7a91921789b6596f29..ca2b78d0365426eccead83ef6d52c901e4d36e68 100644 (file)
@@ -355,7 +355,9 @@ enum info_field {
 /* Stats fields for CSV output. For any field added here, please add the text
  * representation in the stat_fields array. Please only append at the end,
  * before the ST_F_TOTAL_FIELDS entry, and never insert anything in the middle
- * nor at the beginning.
+ * nor at the beginning.When adding an entry here, one must always add a
+ * corresponding one in stat_fields[] otherwise Lua's get_stats() will break,
+ * and "show stats" will show a null.
  */
 enum stat_field {
        ST_F_PXNAME,
diff --git a/reg-tests/webstats/missing-stats-fields.vtc b/reg-tests/webstats/missing-stats-fields.vtc
new file mode 100644 (file)
index 0000000..c85855d
--- /dev/null
@@ -0,0 +1,14 @@
+varnishtest "Verifies the absence of (null) in 'show stats' header"
+
+# This can happen if a new ST_F_xxx enum is added without updating
+# stats_fields[].
+
+feature ignore_unknown_macro
+
+haproxy h1 -conf {
+} -start
+
+haproxy h1 -cli {
+    send "show stat"
+    expect !~ (null)
+}