On Tue, Jan 31, 2017 at 2:34 PM, Nikhil Sontakke <nikh...@2ndquadrant.com> wrote: >>> 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. >> >> ShutdownXLOG() calls CreateRestartPoint() when a standby shuts down, >> so doing all the durability work in CheckPointTwoPhase() would take >> care of any problems. >> > > ShutdownXLOG() gets called from the checkpointer process. See comments > above about the checkpointer not having access to the proper > KnownPreparedList. > > The following test sequence will trigger the issue: > > 1) start master > 2) start replica > 3) prepare a transaction on master > 4) shutdown master > 5) shutdown replica > > CheckPointTwoPhase() in (5) does not sync this prepared transaction > because the checkpointer's KnownPreparedList is empty.
And that's why this needs to be stored in shared memory with a number of elements made of max_prepared_xacts... -- Michael -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers