Re: Speedup twophase transactions
Michael Paquier <michael.paquier@gmail.com>
From: Michael Paquier <michael.paquier@gmail.com>
To: Nikhil Sontakke <nikhils@2ndquadrant.com>
Cc: Stas Kelvich <s.kelvich@postgrespro.ru>,
Simon Riggs <simon@2ndquadrant.com>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>,
Jesper Pedersen <jesper.pedersen@redhat.com>, Robert Haas <robertmhaas@gmail.com>
Date: 2017-01-31T05:38:15Z
Lists: pgsql-hackers
On Tue, Jan 31, 2017 at 2:34 PM, Nikhil Sontakke <nikhils@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
Commits
-
Speedup 2PC recovery by skipping two phase state files in normal path
- 728bd991c3c4 10.0 landed
-
Add tests for two-phase commit
- 30820982b295 10.0 landed
-
Improve grammar of message about two-phase state files.
- 38c363adf497 10.0 landed
-
Speedup 2PC by skipping two phase state files in normal path
- 978b2f65aa12 9.6.0 cited