> --- a/src/backend/access/transam/xlog.c
> +++ b/src/backend/access/transam/xlog.c
> @@ -9573,6 +9573,7 @@ xlog_redo(XLogReaderState *record)
> (errmsg("unexpected timeline ID %u (should be %u)
> in checkpoint record",
> checkPoint.ThisTimeLineID, ThisTimeLineID)));
>
> + KnownPreparedRecreateFiles(checkPoint.redo);
> RecoveryRestartPoint(&checkPoint);
> }
> And actually, when a XLOG_CHECKPOINT_SHUTDOWN record is taken, 2PC
> files are not flushed to disk with this patch. This is a problem as a
> new restart point is created... Having the flush in CheckpointTwoPhase
> really makes the most sense.
Having CheckPointTwoPhase() do the flush would mean shifting the data
from KnownPreparedList into TwoPhaseState shmem.
I wonder what's the best location for this in the common case when we
do shutdown of standby. We could add code in XLOG_CHECKPOINT_SHUTDOWN
and XLOG_CHECKPOINT_ONLINE xlog_redo code path.
Regards,
Nikhils
-- Nikhil Sontakke http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services