• Tom Lane's avatar
    Rearrange postmaster's startup sequence for better syslogger results. · 9a86f03b
    Tom Lane authored
    This is a second try at what commit 57431a91 tried to do, namely,
    launch the syslogger before we open postmaster sockets so that our
    messages about the sockets end up in the syslogger files.  That
    commit fell foul of a bunch of subtle issues caused by trying to
    launch a postmaster child process before creating shared memory.
    Rather than messing with that interaction, let's postpone opening
    the sockets till after we launch the syslogger.
    
    This would not have been terribly safe before commit 7de19fbc,
    because we relied on socket opening to detect whether any competing
    postmasters were using the same port number.  But now that we choose
    IPC keys without regard to the port number, there's no interaction
    to worry about.
    
    Also delay creation of the external PID file (if requested) till after
    the sockets are open, since external code could plausibly be relying
    on that ordering of events.  And postpone most of the work of
    RemovePgTempFiles() so that that potentially-slow processing still
    happens after we make the external PID file.  We have to be a bit
    careful about that last though: as noted in the discussion subsequent to
    bug #15804, EXEC_BACKEND builds still have to clear the parameter-file
    temp dir before launching the syslogger.
    
    Patch by me; thanks to Michael Paquier for review/testing.
    
    Discussion: https://postgr.es/m/15804-3721117bf40fb654@postgresql.org
    9a86f03b
fd.c 90.7 KB