mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-23 06:41:32 +02:00
MINOR: stats: properly handle ST_F_CHECK_DURATION metric
ST_F_CHECK_DURATION metric is typed as unsigned int variable, and it is derived from check->duration that is signed. While most of the time check->duration > 0, it is not always true: with HCHK_STATUS_HANA checks, check->duration is set to -1 to prevent server logs from including irrelevant duration info (HCHK_STATUS_HANA checks are not time related). Because of this, stats could report UINT64_MAX value for ST_F_CHECK_DURATION metric. This was quite confusing. To prevent this, we make sure not to assign negative value to ST_F_CHECK_DURATION. This is only a minor printing issue, not backport needed.
This commit is contained in:
parent
81b7c9518c
commit
b118f2f407
@ -2330,7 +2330,7 @@ int stats_fill_sv_stats(struct proxy *px, struct server *sv, int flags,
|
|||||||
case ST_F_CHECK_DURATION:
|
case ST_F_CHECK_DURATION:
|
||||||
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED &&
|
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED &&
|
||||||
sv->check.status >= HCHK_STATUS_CHECKED)
|
sv->check.status >= HCHK_STATUS_CHECKED)
|
||||||
metric = mkf_u64(FN_DURATION, sv->check.duration);
|
metric = mkf_u64(FN_DURATION, MAX(sv->check.duration, 0));
|
||||||
break;
|
break;
|
||||||
case ST_F_CHECK_DESC:
|
case ST_F_CHECK_DESC:
|
||||||
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED)
|
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user