Re: Prepared transaction releasing locks before deregistering its GID

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Oleksii Kliukin <alexk@hintbits.com>
Cc: Masahiko Sawada <sawada.mshk@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-02-22T23:44:43Z
Lists: pgsql-hackers
On Fri, Feb 22, 2019 at 12:17:01PM +0100, Oleksii Kliukin wrote:
> Thank you for updating the patch and sorry for the delay, it looks good to
> me, the tests pass on my system.

Thanks.  I am still looking at this patch an extra time, so this may
take at most a couple of days from my side.  For now I have committed
the test portion, which is independently useful and caused recovery of
multixact post-commit callbacks to never be stressed.

> Just this:
> 
> @@ -844,17 +851,18 @@ TwoPhaseGetGXact(TransactionId xid)
>  }
> 
>  /*
> - * TwoPhaseGetDummyProc
> + * TwoPhaseGetDummyBackendId
>   *      Get the dummy backend ID for prepared transaction specified by XID

I have not been paying much attention to this one, good catch.  This
is unrelated to the patch of this thread so I have fixed it
separately.
--
Michael

Commits

  1. Make release of 2PC identifier and locks consistent in COMMIT PREPARED

  2. Fix incorrect function reference in comment of twophase.c

  3. Add TAP tests for 2PC post-commit callbacks of multixacts at recovery