Thread: pgsql: Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by
pgsql: Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by
From
tgl@postgresql.org (Tom Lane)
Date:
Log Message: ----------- Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by postponing pg_listener modifications commanded by LISTEN and UNLISTEN until the end of the current transaction. This allows us to hold the ExclusiveLock on pg_listener until after commit, with no greater risk of deadlock than there was before. Aside from fixing the race condition, this gets rid of a truly ugly kludge that was there before, namely having to ignore HeapTupleBeingUpdated failures during NOTIFY. There is a small potential incompatibility, which is that if a transaction issues LISTEN or UNLISTEN and then looks into pg_listener before committing, it won't see any resulting row insertion or deletion, where before it would have. It seems unlikely that anyone would be depending on that, though. Tags: ---- REL8_0_STABLE Modified Files: -------------- pgsql/src/backend/commands: async.c (r1.118.4.1 -> r1.118.4.2) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/async.c?r1=1.118.4.1&r2=1.118.4.2)