On Thu, 2010-02-18 at 14:23 +0200, Heikki Linnakangas wrote: > Simon Riggs wrote: > > Introduce WAL records to log reuse of btree pages, allowing conflict > > resolution during Hot Standby. Page reuse interlock requested by Tom. > > Analysis and patch by me. > > There's still a theoretical possibility for this to happen: > > 1. A page is marked as deleted by VACUUM, setting xact field in the opaque > 2. Master crashes. WAL replay replays the XLOG_BTREE_DELETE_PAGE record. > It resets the xact field to FrozenTransactionId > 3. The page is recycled. This writes a XLOG_BTREE_REUSE_PAGE record with > FrozenTransactionId as latestRemovedXid > > When the standby replays that, it will call > ResolveRecoveryConflictWithSnapshot with FrozenTransactionid, not the > original xid that was used in the master when the page was deleted. > > A straightforward way to fix that is to WAL-log the real xid in the > XLOG_BTREE_DELETE_PAGE records, instead of resetting it to > FrozenTransactionId.
Bug accepted, proposal implemented and committed. -- Simon Riggs www.2ndQuadrant.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers