mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-28 02:57:19 +02:00
promoted to FATAL) end in exit(1) not exit(0). Then change the postmaster to allow exit(1) without a system-wide panic, but not for the startup subprocess or the bgwriter. There were a couple of places that were using exit(1) to deliberately force a system-wide panic; adjust these to be exit(2) instead. This fixes the problem noted back in July that if the startup process exits with elog(ERROR), the postmaster would think everything is hunky-dory and proceed to start up. Alternative solutions such as trying to run the entire startup process as a critical section seem less clean, primarily because of the fact that a fair amount of startup code is shared by all postmaster children in the EXEC_BACKEND case. We'd need an ugly special case somewhere near the head of main.c to make it work if it's the child process's responsibility to determine what happens; and what's the point when the postmaster already treats different children differently? |
||
---|---|---|
.. | ||
autovacuum.c | ||
bgwriter.c | ||
fork_process.c | ||
Makefile | ||
pgarch.c | ||
pgstat.c | ||
postmaster.c | ||
syslogger.c |