Re: Fix race condition in InvalidatePossiblyObsoleteSlot()

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, pgsql-hackers@lists.postgresql.org, exclusion@gmail.com
Date: 2024-02-20T16:03:53Z
Lists: pgsql-hackers
Hi,

On Tue, Feb 20, 2024 at 02:33:44PM +0900, Michael Paquier wrote:
> On Tue, Feb 20, 2024 at 08:51:17AM +0900, Michael Paquier wrote:
> > Prefixing these with "initial_" is fine, IMO.  That shows the
> > intention that these come from the slot's data before doing the
> > termination.  So I'm OK with what's been proposed in v3.
> 
> I was looking at that a second time, and just concluded that this is
> OK, so I've applied that down to 16, wordsmithing a bit the comments.

Thanks!
FWIW, I've started to write a POC regarding the test we mentioned up-thread.

The POC test is based on what has been submitted by Michael in [1]. The POC test
seems to work fine and it seems that nothing more is needed in [1] (at some point
I thought I would need the ability to wake up multiple "wait" injection points
in sequence but that was not necessary).

I'll polish and propose my POC test once [1] is pushed (unless you're curious
about it before).

[1]: https://www.postgresql.org/message-id/flat/ZdLuxBk5hGpol91B%40paquier.xyz

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com



Commits

  1. Revert "Add recovery TAP test for race condition with slot invalidations"

  2. Add recovery TAP test for race condition with slot invalidations

  3. Fix race leading to incorrect conflict cause in InvalidatePossiblyObsoleteSlot()