Re: Prepared transaction releasing locks before deregistering its GID

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Oleksii Kliukin <alexk@hintbits.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-02-19T04:07:06Z
Lists: pgsql-hackers
On 2019-Feb-19, Michael Paquier wrote:

> diff --git a/src/include/access/twophase.h b/src/include/access/twophase.h
> index 6228b091d8..2dcd08e9fa 100644
> --- a/src/include/access/twophase.h
> +++ b/src/include/access/twophase.h
> @@ -34,7 +34,7 @@ extern void TwoPhaseShmemInit(void);
>  extern void AtAbort_Twophase(void);
>  extern void PostPrepare_Twophase(void);
>  
> -extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid);
> +extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid, bool lock_held);
>  extern BackendId TwoPhaseGetDummyBackendId(TransactionId xid);
>  
>  extern GlobalTransaction MarkAsPreparing(TransactionId xid, const char *gid,

Hmm, ABI break ...

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


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