Re: lastOverflowedXid does not handle transaction ID wraparound

Kyotaro Horiguchi <horikyota.ntt@gmail.com>

From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: 9erthalion6@gmail.com
Cc: x4mmm@yandex-team.ru, stanhu@gmail.com, pgsql-hackers@lists.postgresql.org
Date: 2021-10-21T04:01:40Z
Lists: pgsql-hackers
At Wed, 20 Oct 2021 13:48:33 +0200, Dmitry Dolgov <9erthalion6@gmail.com> wrote in 
> > On Wed, Oct 20, 2021 at 04:00:35PM +0500, Andrey Borodin wrote:
> > > 17 окт. 2021 г., в 21:55, Dmitry Dolgov <9erthalion6@gmail.com> написал(а):
> > > I wonder what would be side
> > > effects of clearing it when the snapshot is not suboverfloved anymore?
> >
> > I think we should just invalidate lastOverflowedXid on every XLOG_RUNNING_XACTS if subxid_overflow == false. I can't find a reason not to do so.
> 
> From what I understand that was actually the case, lastOverflowedXid was
> set to InvalidTransactionId in ProcArrayApplyRecoveryInfo if
> subxid_overflow wasn't set. Looks like 10b7c686e52a6d1bb has changed it,
> to what I didn't pay attention originally.

Unfortunately(?), that doesn't happen once standbyState reaches
STANDBY_SNAPSHOT_READY.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



Commits

  1. Reset lastOverflowedXid on standby when needed

  2. Fix variable shadowing in procarray.c.

  3. Move InRecovery and standbyState global vars to xlogutils.c.