]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Allow special SKIP LOCKED condition in Assert()
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 4 Jan 2022 16:01:05 +0000 (13:01 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 4 Jan 2022 16:01:05 +0000 (13:01 -0300)
commitf185f35a83d980033824c3522b7b97ab1c2de71e
tree764f6a3c547a83fea1a084f58c174d80b6086b0c
parentd228af79d0f206f9bd24856b2c1df0909c8db1ec
Allow special SKIP LOCKED condition in Assert()

Under concurrency, it is possible for two sessions to be merrily locking
and releasing a tuple and marking it again as HEAP_XMAX_INVALID all the
while a third session attempts to lock it, miserably fails at it, and
then contemplates life, the universe and everything only to eventually
fail an assertion that said bit is not set.  Before SKIP LOCKED that was
indeed a reasonable expectation, but alas! commit df630b0dd5ea falsified
it.

This bug is as old as time itself, and even older, if you think time
begins with the oldest supported branch.  Therefore, backpatch to all
supported branches.

Author: Simon Riggs <simon.riggs@enterprisedb.com>
Discussion: https://postgr.es/m/CANbhV-FeEwMnN8yuMyss7if1ZKjOKfjcgqB26n8pqu1e=q0ebg@mail.gmail.com
src/backend/access/heap/heapam.c