{
int i;
pid_t wpid;
+ int *walk;
int save_errno = errno;
POOL_SETMASK(&AuthBlockSig);
*/
if (getpid() != mypid)
{
- ereport(DEBUG1,
- (errmsg("exit_handler: I am not parent")));
-
POOL_SETMASK(&UnBlockSig);
proc_exit(0);
}
- if (sig == SIGTERM)
- ereport(LOG,
- (errmsg("received smart shutdown request")));
- else if (sig == SIGINT)
- ereport(LOG,
- (errmsg("received fast shutdown request")));
- else if (sig == SIGQUIT)
- ereport(LOG,
- (errmsg("received immediate shutdown request")));
- else
+ if (sig != SIGTERM && sig != SIGINT && sig != SIGQUIT)
{
- ereport(LOG,
- (errmsg("main process received unknown signal: %d",sig),
- errdetail("ignoring...")));
-
POOL_SETMASK(&UnBlockSig);
errno = save_errno;
return;
processState = EXITING;
/* Close listen socket */
- ereport(LOG,
- (errmsg("shutdown request. closing listen socket")));
-
- int *walk;
for (walk = fds; *walk != -1; walk++)
close(*walk);
wpid = waitpid(-1, &ret_pid, 0);
} while (wpid > 0 || (wpid == -1 && errno == EINTR));
- if (wpid == -1 && errno != ECHILD)
- ereport(LOG,
- (errmsg("wait() failed. reason:%s", strerror(errno))));
-
process_info = NULL;
exit(0);
-
- errno = save_errno;
}
/*
sigjmp_buf local_sigjmp_buf;
struct timeval uptime;
- ereport(DEBUG1,
- (errmsg("I am PCP child with pid:%d",getpid())));
-
/* Identify myself via ps */
init_ps_display("", "", "", "");
}
/* We can now handle ereport(ERROR) */
PG_exception_stack = &local_sigjmp_buf;
+
+ ereport(DEBUG1,
+ (errmsg("I am PCP child with pid:%d",getpid())));
+
for(;;)
{
int port;
pid_t wpid;
POOL_SETMASK(&AuthBlockSig);
- ereport(DEBUG1,
- (errmsg("PCP child receives shutdown request signal %d, Forwarding to all children", sig)));
pcp_kill_all_children(sig);
if (sig == SIGTERM) /* smart shutdown */
{
- ereport(DEBUG1,
- (errmsg("PCP child receives smart shutdown request")));
/* close the listening sockets */
close(pcp_unix_fd);
close(pcp_inet_fd);
}
- else if (sig == SIGINT)
- {
- ereport(DEBUG1,
- (errmsg("PCP child receives fast shutdown request")));
- }
- else if (sig == SIGQUIT)
- {
- ereport(DEBUG1,
- (errmsg("PCP child receives immediate shutdown request")));
- }
POOL_SETMASK(&UnBlockSig);
wpid = wait(NULL);
}while (wpid > 0 || (wpid == -1 && errno == EINTR));
- if (wpid == -1 && errno != ECHILD)
- ereport(WARNING,
- (errmsg("wait() on pcp worker children failed. reason:%s", strerror(errno))));
list_free(pcp_worker_children);
}
pcp_worker_children = NULL;