From: Willy Tarreau Date: Mon, 5 Nov 2018 13:38:13 +0000 (+0100) Subject: MINOR: stats: report the number of active jobs and listeners in "show info" X-Git-Tag: v1.9-dev6~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=00098ea034d4e3a548916cac7f50058a7c1b5256;p=thirdparty%2Fhaproxy.git MINOR: stats: report the number of active jobs and listeners in "show info" When an haproxy process doesn't stop after a reload, it's because it still has some active "jobs", which mainly are active sessions, listeners, peers or other specific activities. Sometimes it's difficult to troubleshoot the cause of these issues (which generally are the result of a bug) only because some indicators are missing. This patch add the number of listeners, the number of jobs, and the stopping status to the output of "show info". This way it becomes a bit easier to try to narrow down the cause of such an issue should it happen. A typical use case is to connect to the CLI before reloading, then issuing the "show info" command to see what happens. In the normal situation, stopping should equal 1, jobs should equal 1 (meaning only the CLI is still active) and listeners should equal zero. The patch is so trivial that it could make sense to backport it to 1.8 in order to help with troubleshooting. --- diff --git a/include/types/stats.h b/include/types/stats.h index a22be365e3..8df848978d 100644 --- a/include/types/stats.h +++ b/include/types/stats.h @@ -288,6 +288,9 @@ enum info_field { INF_IDLE_PCT, INF_NODE, INF_DESCRIPTION, + INF_STOPPING, + INF_JOBS, + INF_LISTENERS, /* must always be the last one */ INF_TOTAL_FIELDS diff --git a/src/stats.c b/src/stats.c index efa5c090c3..cbb9870024 100644 --- a/src/stats.c +++ b/src/stats.c @@ -130,6 +130,9 @@ const char *info_field_names[INF_TOTAL_FIELDS] = { [INF_IDLE_PCT] = "Idle_pct", [INF_NODE] = "node", [INF_DESCRIPTION] = "description", + [INF_STOPPING] = "Stopping", + [INF_JOBS] = "Jobs", + [INF_LISTENERS] = "Listeners", }; const char *stat_field_names[ST_F_TOTAL_FIELDS] = { @@ -3292,6 +3295,9 @@ int stats_fill_info(struct field *info, int len) info[INF_NODE] = mkf_str(FO_CONFIG|FN_OUTPUT|FS_SERVICE, global.node); if (global.desc) info[INF_DESCRIPTION] = mkf_str(FO_CONFIG|FN_OUTPUT|FS_SERVICE, global.desc); + info[INF_STOPPING] = mkf_u32(0, stopping); + info[INF_JOBS] = mkf_u32(0, jobs); + info[INF_LISTENERS] = mkf_u32(0, listeners); return 1; }