Re: BUG #17485: Records missing from Primary Key index when doing REINDEX INDEX CONCURRENTLY

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Andrey Borodin <x4mmm@yandex-team.ru>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, Robert Haas <robertmhaas@gmail.com>, Peter Geoghegan <pg@bowt.ie>, Michael Paquier <michael@paquier.xyz>, Петър Славов <pet.slavov@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2022-05-28T07:02:19Z
Lists: pgsql-bugs
Hi,

On 2022-05-28 11:26:55 +0500, Andrey Borodin wrote:
> > On 28 May 2022, at 04:13, Andres Freund <andres@anarazel.de> wrote:
> > 
> > Seems like we should add a test for HOT vs CONCURRENTLY?
> 
> This test fails on my machine with 35K transactions. And fails in ~50% of cases with 30K transactions.
> And this seems like a lot of work, ~10 CPU seconds. How can we reduce the time to reproduce?

I think you basically need to force some, but not all, of the modifying
transactions to be open for a bit longer, so that it's more likely that
there's a chance to prune vs CIC waiting. Might also be helpful to update rows
multiple times within an xact.

Greetings,

Andres Freund



Commits

  1. Revert changes to CONCURRENTLY that "sped up" Xmin advance

  2. Fix possible HOT corruption when RECENTLY_DEAD changes to DEAD while pruning.