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:17 +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 c5db3849dcb2b86338eba1ead0efd3cb512a70ad..1ffd8e90b2295f0ce82b58712a2c4f83167b1973 100644 (file)
@@ -2354,10 +2354,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))));