Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix XLogReadBufferForRedoExtended to get cleanup lock when asked to do so.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 13 Nov 2014 15:54:20 +0000 (17:54 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 13 Nov 2014 15:54:20 +0000 (17:54 +0200)
src/backend/access/transam/xlogutils.c

index 1a21dac85382ed991a11603e62bccab9745e5ae1..da0e45bfcc6b1f065684384df2c8193882634f6c 100644 (file)
@@ -312,7 +312,10 @@ XLogReadBufferForRedoExtended(XLogRecPtr lsn, XLogRecord *record,
        *buf = XLogReadBufferExtended(rnode, forkno, blkno, mode);
        if (BufferIsValid(*buf))
        {
-           LockBuffer(*buf, BUFFER_LOCK_EXCLUSIVE);
+           if (get_cleanup_lock)
+               LockBufferForCleanup(*buf);
+           else
+               LockBuffer(*buf, BUFFER_LOCK_EXCLUSIVE);
            if (lsn <= PageGetLSN(BufferGetPage(*buf)))
                return BLK_DONE;
            else