Revise postmaster startup/shutdown logic to eliminate the problem that a
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Aug 2007 01:18:43 +0000 (01:18 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Aug 2007 01:18:43 +0000 (01:18 +0000)
commitbbe3c02d3833f431aaf3271b26a3dfe5d922ddc0
tree5b381786b3af1dd7ad5f71062e1187fe0b898682
parentc556b29a1199babc672b81065fe74fb50657c451
Revise postmaster startup/shutdown logic to eliminate the problem that a
constant flow of new connection requests could prevent the postmaster from
completing a shutdown or crash restart.  This is done by labeling child
processes that are "dead ends", that is, we know that they were launched only
to tell a client that it can't connect.  These processes are managed
separately so that they don't confuse us into thinking that we can't advance
to the next stage of a shutdown or restart sequence, until the very end
where we must wait for them to drain out so we can delete the shmem segment.
Per discussion of a misbehavior reported by Keaton Adams.

Since this code was baroque already, and my first attempt at fixing the
problem made it entirely impenetrable, I took the opportunity to rewrite it
in a state-machine style.  That eliminates some duplicated code sections and
hopefully makes everything a bit clearer.
src/backend/postmaster/postmaster.c