]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix nextXid tracking bug on standbys (9.5-11 only).
authorThomas Munro <tmunro@postgresql.org>
Thu, 12 Mar 2020 05:06:54 +0000 (18:06 +1300)
committerThomas Munro <tmunro@postgresql.org>
Thu, 12 Mar 2020 05:16:44 +0000 (18:16 +1300)
commit4e8cad2da36adff877c81d8c336d7c28ed19ebae
tree8e3f67a31ef5eb76ef4ce24c27b351d25322ae9a
parent2b9d70159154a5ff6eb2d6f09db6f8da433328aa
Fix nextXid tracking bug on standbys (9.5-11 only).

RecordKnownAssignedTransactionIds() should never move
nextXid backwards.  Before this commit, that could happen
if some other code path had advanced it without advancing
latestObservedXid.

One consequence is that a well timed XLOG_CHECKPOINT_ONLINE
could cause hot standby feedback messages to get confused
and report an xmin from a future epoch, potentially allowing
vacuum to run too soon on the primary.

Repair, by making sure RecordKnownAssignedTransactionIds()
can only move nextXid forwards.

In release 12 and master, this was already done by commit
2fc7af5e, which consolidated similar code and straightened
out this bug.  Back-patch to supported releases before that.

Author: Eka Palamadai <ekanatha@amazon.com>
Discussion: https://postgr.es/m/98BB4805-D0A2-48E1-96F4-15014313EADC@amazon.com
src/backend/storage/ipc/procarray.c