• Simon Riggs's avatar
    Avoid tricky race condition recording XLOG_HINT · 47c43331
    Simon Riggs authored
    We copy the buffer before inserting an XLOG_HINT to avoid WAL CRC errors
    caused by concurrent hint writes to buffer while share locked. To make this work
    we refactor RestoreBackupBlock() to allow an XLOG_HINT to avoid the normal
    path for backup blocks, which assumes the underlying buffer is exclusive locked.
    Resulting code completely changes layout of XLOG_HINT WAL records, but
    this isn't even beta code, so this is a low impact change.
    In passing, avoid taking WALInsertLock for full page writes on checksummed
    hints, remove related cruft from XLogInsert() and improve xlog_desc record for
    XLOG_HINT.
    
    Andres Freund
    
    Bug report by Fujii Masao, testing by Jeff Janes and Jaime Casanova,
    review by Jeff Davis and Simon Riggs. Applied with changes from review
    and some comment editing.
    47c43331
xlogdesc.c 3.83 KB