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.
diff --git a/src/stats.c b/src/stats.c
index 5fd4d3f..6ce4117 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -2330,7 +2330,7 @@
case ST_F_CHECK_DURATION:
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED &&
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;
case ST_F_CHECK_DESC:
if ((sv->check.state & (CHK_ST_ENABLED|CHK_ST_PAUSED)) == CHK_ST_ENABLED)