Re: Prepared transaction releasing locks before deregistering its GID
Oleksii Kliukin <alexk@hintbits.com>
From: Oleksii Kliukin <alexk@hintbits.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-02-19T19:17:14Z
Lists: pgsql-hackers
Hi, Oleksii Kliukin <alexk@hintbits.com> wrote: > > The approach looks good to me. Surprisingly, I saw no stalled backends > because of the double acquisition of lock at TwoPhaseGetGXact once I put a > simple TwoPhaseStateLock right before the "gxact->valid = false” line; I > will test your patch and post the outcome. I gave it a spin on the same VM host as shown to constantly reproduce the issue and observed neither 'identifier already in use' nor any locking issues over a few dozens of runs, so it looks good to me. That was HEAD, but since FinishPreparedTransaction seems to be identical there and on the back branches it should work for PG 10 and 11 as well. Regards, Oleksii Kliukin
Commits
-
Make release of 2PC identifier and locks consistent in COMMIT PREPARED
- effe7d9552dd 12.0 landed
-
Fix incorrect function reference in comment of twophase.c
- 4c23216002ac 12.0 landed
-
Add TAP tests for 2PC post-commit callbacks of multixacts at recovery
- b1086767087e 12.0 landed