Skip to content

Commit b118f2f

Browse files
Darleletwtarreau
authored andcommitted
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.
1 parent 81b7c95 commit b118f2f

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/stats.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2330,7 +2330,7 @@ int stats_fill_sv_stats(struct proxy *px, struct server *sv, int flags,
23302330
case ST_F_CHECK_DURATION:
23312331
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED &&
23322332
sv->check.status >= HCHK_STATUS_CHECKED)
2333-
metric = mkf_u64(FN_DURATION, sv->check.duration);
2333+
metric = mkf_u64(FN_DURATION, MAX(sv->check.duration, 0));
23342334
break;
23352335
case ST_F_CHECK_DESC:
23362336
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED)

0 commit comments

Comments
 (0)