diff --git a/include/types/checks.h b/include/types/checks.h index 83ea2b510..d5038ebc8 100644 --- a/include/types/checks.h +++ b/include/types/checks.h @@ -29,6 +29,7 @@ */ enum chk_result { CHK_RES_UNKNOWN = 0, /* initialized to this by default */ + CHK_RES_NEUTRAL, /* valid check but no status information */ CHK_RES_FAILED, /* check failed */ CHK_RES_PASSED, /* check succeeded and server is fully up again */ CHK_RES_CONDPASS, /* check reports the server doesn't want new sessions */ diff --git a/src/checks.c b/src/checks.c index d5216dd1d..fc7e77637 100644 --- a/src/checks.c +++ b/src/checks.c @@ -66,6 +66,8 @@ static const struct check_status check_statuses[HCHK_STATUS_SIZE] = { [HCHK_STATUS_INI] = { CHK_RES_UNKNOWN, "INI", "Initializing" }, [HCHK_STATUS_START] = { /* SPECIAL STATUS*/ }, + /* Below we have finished checks */ + [HCHK_STATUS_CHECKED] = { CHK_RES_NEUTRAL, "CHECKED", "No status change" }, [HCHK_STATUS_HANA] = { CHK_RES_FAILED, "HANA", "Health analyze" }, [HCHK_STATUS_SOCKERR] = { CHK_RES_FAILED, "SOCKERR", "Socket error" }, @@ -232,6 +234,10 @@ static void set_server_check_status(struct check *check, short status, const cha tv_zero(&check->start); } + /* no change is expected if no state change occurred */ + if (check->result == CHK_RES_NEUTRAL) + return; + report = 0; switch (check->result) {