• Tom Lane's avatar
    Revise postmaster startup/shutdown logic to eliminate the problem that a · bbe3c02d
    Tom Lane authored
    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.
    bbe3c02d
postmaster.c 121 KB