• Tom Lane's avatar
    Centralize setup of SIGQUIT handling for postmaster child processes. · 44fc6e25
    Tom Lane authored
    We decided that the policy established in commit 7634bd4f for
    the bgwriter, checkpointer, walwriter, and walreceiver processes,
    namely that they should accept SIGQUIT at all times, really ought
    to apply uniformly to all postmaster children.  Therefore, get
    rid of the duplicative and inconsistent per-process code for
    establishing that signal handler and removing SIGQUIT from BlockSig.
    Instead, make InitPostmasterChild do it.
    
    The handler set up by InitPostmasterChild is SignalHandlerForCrashExit,
    which just summarily does _exit(2).  In interactive backends, we
    almost immediately replace that with quickdie, since we would prefer
    to try to tell the client that we're dying.  However, this patch is
    changing the behavior of autovacuum (both launcher and workers), as
    well as walsenders.  Those processes formerly also used quickdie,
    but AFAICS that was just mindless copy-and-paste: they don't have
    any interactive client that's likely to benefit from being told this.
    
    The stats collector continues to be an outlier, in that it thinks
    SIGQUIT means normal exit.  That should probably be changed for
    consistency, but there's another patch set where that's being
    dealt with, so I didn't do so here.
    
    Discussion: https://postgr.es/m/644875.1599933441@sss.pgh.pa.us
    44fc6e25
autovacuum.c 101 KB