• Thomas Munro's avatar
    Wake up for latches in CheckpointWriteDelay(). · 78c0f85e
    Thomas Munro authored
    The checkpointer shouldn't ignore its latch.  Other backends may be
    waiting for it to drain the request queue.  Hopefully real systems don't
    have a full queue often, but the condition is reached easily when
    shared_buffers is small.
    
    This involves defining a new wait event, which will appear in the
    pg_stat_activity view often due to spread checkpoints.
    
    Back-patch only to 14.  Even though the problem exists in earlier
    branches too, it's hard to hit there.  In 14 we stopped using signal
    handlers for latches on Linux, *BSD and macOS, which were previously
    hiding this problem by interrupting the sleep (though not reliably, as
    the signal could arrive before the sleep begins; precisely the problem
    latches address).
    Reported-by: default avatarAndres Freund <andres@anarazel.de>
    Reviewed-by: default avatarAndres Freund <andres@anarazel.de>
    Discussion: https://postgr.es/m/20220226213942.nb7uvb2pamyu26dj%40alap3.anarazel.de
    78c0f85e
wait_event.h 8.28 KB