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 `!@<PID> show stat` through a master socket to the disabled
process and have it returning its stats data.
This commit is contained in:
Marno Krahmer 2021-06-24 16:51:08 +02:00 committed by Willy Tarreau
parent 23048875a4
commit 07954fb069

View File

@ -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;
}