Emit warning if life check has not started yet.
authorTatsuo Ishii <ishii@postgresql.org>
Wed, 13 Aug 2025 11:08:08 +0000 (20:08 +0900)
committerTatsuo Ishii <ishii@postgresql.org>
Wed, 13 Aug 2025 11:08:08 +0000 (20:08 +0900)
Currently lifecheck emits a log only when life check becomes
ready. This is inconvenient for admins since they need to keep on
watching log file until life check is ready. This commit makes the
life check process to emit additional warnings periodically until life
check has started. The interval of the warnings is wd_interval * 10
seconds. However for the first time at lifecheck starting, no warning
is emitted since it is likely that lifecheck is not ready at that
point.

src/watchdog/wd_lifecheck.c

index 5830d82af9085c187c5a914933b66b5064b7f227..0694a222802ef23476e7715db346366251c71d3a 100644 (file)
@@ -378,6 +378,7 @@ lifecheck_main(void)
 {
        sigjmp_buf      local_sigjmp_buf;
        int                     i;
+       bool            need_life_check_warning = false;
 
        ereport(DEBUG1,
                        (errmsg("I am watchdog lifecheck child with pid:%d", getpid())));
@@ -424,6 +425,14 @@ lifecheck_main(void)
        /* wait until ready to go */
        while (WD_OK != is_wd_lifecheck_ready())
        {
+               /*
+                * For the first time we do not emit warning since it is likely the
+                * life check is not ready.
+                */
+               if (need_life_check_warning)
+                       ereport(WARNING,
+                                       (errmsg("watchdog: lifecheck has not started yet")));
+               need_life_check_warning = true;
                sleep(pool_config->wd_interval * 10);
        }