Re: [HACKERS] pg_serial early wraparound

Stephen Frost <sfrost@snowman.net>

From: Stephen Frost <sfrost@snowman.net>
To: Thomas Munro <thomas.munro@enterprisedb.com>
Cc: Anastasia Lubennikova <lubennikovaav@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>, Thomas Munro <munro@ip9.org>
Date: 2018-01-22T22:50:14Z
Lists: pgsql-hackers
Greetings,

* Thomas Munro (thomas.munro@enterprisedb.com) wrote:
> On Wed, Jun 28, 2017 at 1:11 PM, Thomas Munro
> <thomas.munro@enterprisedb.com> wrote:
> > On Sat, Mar 25, 2017 at 7:27 AM, Thomas Munro
> > <thomas.munro@enterprisedb.com> wrote:
> >> On Sat, Mar 25, 2017 at 3:11 AM, Anastasia Lubennikova
> >> <lubennikovaav@gmail.com> wrote:
> >>> You claim that SLRUs now support five digit segment name, while in slru.h
> >>> at current master I see the following:
> >>>
> >>>  * Note: slru.c currently assumes that segment file names will be four hex
> >>>  * digits.  This sets a lower bound on the segment size (64K transactions
> >>>  * for 32-bit TransactionIds).
> >>>  */
> >
> > I've now complained about that comment in a separate thread.
> >
> >> It's not urgent, it's just cleanup work, so I've now moved it to the
> >> next commitfest.  I will try to figure out a new way to demonstrate
> >> that it works correctly without having to ask a review[er] to disable
> >> any assertions.  Thanks again.
> 
> Rebased again, now with a commit message.  That assertion has since
> been removed (commit ec99dd5a) so the attached test script can once
> again be used to see the contents of pg_serial as the xid goes all the
> way around, if you build with TEST_OLDSERXID defined so that
> predicate.c forces information about xids out to pg_serial.

I've taken a look through this and it seems pretty reasonable.  Would be
great to have someone actually try to duplicate the testing that Thomas
did (though I have little doubt that it works as described) and get it
to Ready-For-Committer state.

Anastasia, thanks for the previous review, any chance you could try
again with the latest patch (against the current state of git)?

Thanks!

Stephen

Commits

  1. Remove obsolete SLRU wrapping and warnings from predicate.c.

  2. Remove incorrect assertion in clog.c

  3. Keep track of transaction commit timestamps

  4. Handle 5-char filenames in SlruScanDirectory