Remove AELs from subxids correctly on standby
authorSimon Riggs <simon@2ndQuadrant.com>
Sat, 16 Jun 2018 13:03:29 +0000 (14:03 +0100)
committerSimon Riggs <simon@2ndQuadrant.com>
Sat, 16 Jun 2018 13:03:29 +0000 (14:03 +0100)
commit15378c1a15390a2b4c315f19f1644af46c7e3a15
tree62dd46828c4fc45790c66aaf133c9564e3571ca6
parent1cfdb1cb0e3f0acd0fac11537410c48dfd6d9075
Remove AELs from subxids correctly on standby

Issues relate only to subtransactions that hold AccessExclusiveLocks
when replayed on standby.

Prior to PG10, aborting subtransactions that held an
AccessExclusiveLock failed to release the lock until top level commit or
abort. 49bff5300d527 fixed that.

However, 49bff5300d527 also introduced a similar bug where subtransaction
commit would fail to release an AccessExclusiveLock, leaving the lock to
be removed sometimes early and sometimes late. This commit fixes
that bug also. Backpatch to PG10 needed.

Tested by observation. Note need for multi-node isolationtester to improve
test coverage for this and other HS cases.

Reported-by: Simon Riggs
Author: Simon Riggs
src/backend/access/transam/xact.c
src/backend/storage/ipc/procarray.c
src/backend/storage/ipc/standby.c
src/include/storage/standby.h