pgsql: Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by - Mailing list pgsql-committers

From tgl@postgresql.org (Tom Lane)
Subject pgsql: Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by
Date
Msg-id 20080312201239.A1F88753336@cvs.postgresql.org
Whole thread Raw
List pgsql-committers
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)

pgsql-committers by date:

Previous
From: tgl@postgresql.org (Tom Lane)
Date:
Subject: pgsql: Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by
Next
From: tgl@postgresql.org (Tom Lane)
Date:
Subject: pgsql: Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by