• Tom Lane's avatar
    Handle impending sinval queue overflow by means of a separate signal · ebfc56d3
    Tom Lane authored
    (SIGUSR1, which we have not been using recently) instead of piggybacking
    on SIGUSR2-driven NOTIFY processing.  This has several good results:
    the processing needed to drain the sinval queue is a lot less than the
    processing needed to answer a NOTIFY; there's less contention since we
    don't have a bunch of backends all trying to acquire exclusive lock on
    pg_listener; backends that are sitting inside a transaction block can
    still drain the queue, whereas NOTIFY processing can't run if there's
    an open transaction block.  (This last is a fairly serious issue that
    I don't think we ever recognized before --- with clients like JDBC that
    tend to sit with open transaction blocks, the sinval queue draining
    mechanism never really worked as intended, probably resulting in a lot
    of useless cache-reset overhead.)  This is the last of several proposed
    changes in response to Philip Warner's recent report of sinval-induced
    performance problems.
    ebfc56d3
postmaster.c 89 KB