mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
postmaster: Don't open-code TerminateChildren() in HandleChildCrash()
After removing the duplication no user of sigquit_child() remains, therefore remove it. Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Discussion: https://postgr.es/m/kgng5nrvnlv335evmsuvpnh354rw7qyazl73kdysev2cr2v5zu@m3cfzxicm5kp
This commit is contained in:
@ -243,6 +243,13 @@ bool enable_bonjour = false;
|
|||||||
char *bonjour_name;
|
char *bonjour_name;
|
||||||
bool restart_after_crash = true;
|
bool restart_after_crash = true;
|
||||||
bool remove_temp_files_after_crash = true;
|
bool remove_temp_files_after_crash = true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When terminating child processes after fatal errors, like a crash of a
|
||||||
|
* child process, we normally send SIGQUIT -- and most other comments in this
|
||||||
|
* file are written on the assumption that we do -- but developers might
|
||||||
|
* prefer to use SIGABRT to collect per-child core dumps.
|
||||||
|
*/
|
||||||
bool send_abort_for_crash = false;
|
bool send_abort_for_crash = false;
|
||||||
bool send_abort_for_kill = false;
|
bool send_abort_for_kill = false;
|
||||||
|
|
||||||
@ -424,7 +431,6 @@ static int BackendStartup(ClientSocket *client_sock);
|
|||||||
static void report_fork_failure_to_client(ClientSocket *client_sock, int errnum);
|
static void report_fork_failure_to_client(ClientSocket *client_sock, int errnum);
|
||||||
static CAC_state canAcceptConnections(BackendType backend_type);
|
static CAC_state canAcceptConnections(BackendType backend_type);
|
||||||
static void signal_child(PMChild *pmchild, int signal);
|
static void signal_child(PMChild *pmchild, int signal);
|
||||||
static void sigquit_child(PMChild *pmchild);
|
|
||||||
static bool SignalChildren(int signal, BackendTypeMask targetMask);
|
static bool SignalChildren(int signal, BackendTypeMask targetMask);
|
||||||
static void TerminateChildren(int signal);
|
static void TerminateChildren(int signal);
|
||||||
static int CountChildren(BackendTypeMask targetMask);
|
static int CountChildren(BackendTypeMask targetMask);
|
||||||
@ -2701,32 +2707,12 @@ HandleChildCrash(int pid, int exitstatus, const char *procname)
|
|||||||
/*
|
/*
|
||||||
* Signal all other child processes to exit. The crashed process has
|
* Signal all other child processes to exit. The crashed process has
|
||||||
* already been removed from ActiveChildList.
|
* already been removed from ActiveChildList.
|
||||||
|
*
|
||||||
|
* We could exclude dead-end children here, but at least when sending
|
||||||
|
* SIGABRT it seems better to include them.
|
||||||
*/
|
*/
|
||||||
if (take_action)
|
if (take_action)
|
||||||
{
|
TerminateChildren(send_abort_for_crash ? SIGABRT : SIGQUIT);
|
||||||
dlist_iter iter;
|
|
||||||
|
|
||||||
dlist_foreach(iter, &ActiveChildList)
|
|
||||||
{
|
|
||||||
PMChild *bp = dlist_container(PMChild, elem, iter.cur);
|
|
||||||
|
|
||||||
/* We do NOT restart the syslogger */
|
|
||||||
if (bp == SysLoggerPMChild)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (bp == StartupPMChild)
|
|
||||||
StartupStatus = STARTUP_SIGNALED;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This backend is still alive. Unless we did so already, tell it
|
|
||||||
* to commit hara-kiri.
|
|
||||||
*
|
|
||||||
* We could exclude dead-end children here, but at least when
|
|
||||||
* sending SIGABRT it seems better to include them.
|
|
||||||
*/
|
|
||||||
sigquit_child(bp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Shutdown != ImmediateShutdown)
|
if (Shutdown != ImmediateShutdown)
|
||||||
FatalError = true;
|
FatalError = true;
|
||||||
@ -3349,19 +3335,6 @@ signal_child(PMChild *pmchild, int signal)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Convenience function for killing a child process after a crash of some
|
|
||||||
* other child process. We apply send_abort_for_crash to decide which signal
|
|
||||||
* to send. Normally it's SIGQUIT -- and most other comments in this file are
|
|
||||||
* written on the assumption that it is -- but developers might prefer to use
|
|
||||||
* SIGABRT to collect per-child core dumps.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
sigquit_child(PMChild *pmchild)
|
|
||||||
{
|
|
||||||
signal_child(pmchild, (send_abort_for_crash ? SIGABRT : SIGQUIT));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send a signal to the targeted children.
|
* Send a signal to the targeted children.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user