Fix bufmgr so CHECKPOINT_END_OF_RECOVERY behaves as a shutdown checkpoint.
Recovery code documents clearly that a shutdown checkpoint is executed at end of recovery - a shutdown checkpoint WAL record is written but the buffer manager had been altered to treat end of recovery as a normal checkpoint. This bug exacerbates the bufmgr relpersistence bug. Bug spotted by Andres Freund, patch by me.
This commit is contained in:
parent
327542645e
commit
64e196b6ef
@ -1206,9 +1206,9 @@ BufferSync(int flags)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Unless this is a shutdown checkpoint, we write only permanent, dirty
|
* Unless this is a shutdown checkpoint, we write only permanent, dirty
|
||||||
* buffers. But at shutdown time, we write all dirty buffers.
|
* buffers. But at shutdown or end of recovery, we write all dirty buffers.
|
||||||
*/
|
*/
|
||||||
if (!(flags & CHECKPOINT_IS_SHUTDOWN))
|
if (!((flags & CHECKPOINT_IS_SHUTDOWN) || (flags & CHECKPOINT_END_OF_RECOVERY)))
|
||||||
mask |= BM_PERMANENT;
|
mask |= BM_PERMANENT;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user