From 07954fb069828e311cef9b2bc54a5b4deed96508 Mon Sep 17 00:00:00 2001 From: Marno Krahmer Date: Thu, 24 Jun 2021 16:51:08 +0200 Subject: [PATCH] MEDIUM: stats: include disabled proxies that hold active sessions to stats After reloading HAProxy, the old process may still hold active sessions. Currently there is no way to gather information, how many sessions such a process still holds. This patch will not exclude disabled proxies from stats output when they hold at least one active session. This will allow sending `!@ show stat` through a master socket to the disabled process and have it returning its stats data. --- src/stats.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/stats.c b/src/stats.c index 3458924b7..4b4f28daf 100644 --- a/src/stats.c +++ b/src/stats.c @@ -3575,8 +3575,11 @@ static int stats_dump_proxies(struct stream_interface *si, } px = appctx->ctx.stats.obj1; - /* skip the disabled proxies, global frontend and non-networked ones */ - if (!px->disabled && px->uuid > 0 && (px->cap & (PR_CAP_FE | PR_CAP_BE))) { + /* Skip the global frontend proxies and non-networked ones. + * Also skip disabled proxies unless they are still holding active sessions. + * This change allows retrieving stats from "old" proxies after a reload. + */ + if ((!px->disabled || px->served > 0) && px->uuid > 0 && (px->cap & (PR_CAP_FE | PR_CAP_BE))) { if (stats_dump_proxy_to_buffer(si, htx, px, uri) == 0) return 0; }