Enhance SIGHLD handler of Pgpool-II main process.
authorTatsuo Ishii <ishii@sraoss.co.jp>
Sun, 24 Oct 2021 07:22:33 +0000 (16:22 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Sun, 24 Oct 2021 07:34:48 +0000 (16:34 +0900)
When Pgpool-II child is killed by SIGKILL signal, the SIGHLD handler
just emitted LOG level message as other signals.  But SIGKILL is an
important event, for example killed by OOM killer. So emit a WARNING
level message instead.

Per suggestion from Michail Alexakis.
Discussion: https://www.pgpool.net/pipermail/pgpool-general/2021-October/007808.html

src/main/pgpool_main.c

index aee73af1c82ef431bc793485861ba76e57c439ec..9d946a1bf7e8517e5560893cbab0094250c11a7f 100644 (file)
@@ -2656,10 +2656,13 @@ reaper(void)
                }
                if (WIFSIGNALED(status))
                {
-                       /* Child terminated by segmentation fault. Report it */
+                       /* Child terminated by segmentation fault or sigkill. Report it */
                        if (WTERMSIG(status) == SIGSEGV)
                                ereport(WARNING,
                                                (errmsg("%s process with pid: %d was terminated by segmentation fault", exiting_process_name, pid)));
+                       else if (WTERMSIG(status) == SIGKILL)
+                               ereport(WARNING,
+                                               (errmsg("%s process with pid: %d was terminated by sigkill", exiting_process_name, pid)));
                        else
                                ereport(LOG,
                                                (errmsg("%s process with pid: %d exits with status %d by signal %d", exiting_process_name, pid, status, WTERMSIG(status))));