pgsql-server/src backend/access/heap/heapam.c ...

Started by Tom Lanealmost 23 years ago5 messagescomitters
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

CVSROOT: /cvsroot
Module name: pgsql-server
Changes by: tgl@svr1.postgresql.org 03/09/15 20:33:43

Modified files:
src/backend/access/heap: heapam.c
src/backend/commands: async.c
src/backend/executor: execMain.c
src/include/access: heapam.h

Log message:
Fix LISTEN/NOTIFY race condition reported by Gavin Sherry. While a
really general fix might be difficult, I believe the only case where
AtCommit_Notify could see an uncommitted tuple is where the other guy
has just unlistened and not yet committed. The best solution seems to
be to just skip updating that tuple, on the assumption that the other
guy does not want to hear about the notification anyway. This is not
perfect --- if the other guy rolls back his unlisten instead of committing,
then he really should have gotten this notify. But to do that, we'd have
to wait to see if he commits or not, or make UNLISTEN hold exclusive lock
on pg_listener until commit. Either of these answers is deadlock-prone,
not to mention horrible for interactive performance. Do it this way
for now. (What happened to that project to do LISTEN/NOTIFY in memory
with no table, anyway?)

#2Sean Chittenden
sean@chittenden.org
In reply to: Tom Lane (#1)
Re: pgsql-server/src backend/access/heap/heapam.c ...

CVSROOT: /cvsroot
Module name: pgsql-server
Changes by: tgl@svr1.postgresql.org 03/09/15 20:33:43

Modified files:
src/backend/access/heap: heapam.c
src/backend/commands: async.c
src/backend/executor: execMain.c
src/include/access: heapam.h

Log message:

[snip]

(What happened to that project to do LISTEN/NOTIFY in memory
with no table, anyway?)

You mean TelegraphCQ?

http://telegraph.cs.berkeley.edu/telegraphcq/v0.2/

Seems to be alive and kicking, though I bet things slowed down because
of summer qtr. -sc

--
Sean Chittenden

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Sean Chittenden (#2)
Re: pgsql-server/src backend/access/heap/heapam.c ...

Sean Chittenden <sean@chittenden.org> writes:

[snip]

(What happened to that project to do LISTEN/NOTIFY in memory
with no table, anyway?)

You mean TelegraphCQ?

No, I meant this discussion:
http://archives.postgresql.org/pgsql-hackers/2002-03/msg00968.php
I'm not sure if Telegraph is really doing the same thing.

regards, tom lane

#4Neil Conway
neilc@samurai.com
In reply to: Tom Lane (#3)
Re: pgsql-server/src backend/access/heap/heapam.c ...

On Mon, 2003-09-15 at 20:19, Tom Lane wrote:

Sean Chittenden <sean@chittenden.org> writes:

[snip]

(What happened to that project to do LISTEN/NOTIFY in memory
with no table, anyway?)

Thanks for the reminder -- I'd like to implement this, but I can't say
when I'll get the time. In the mean while, anyone else who would like to
do the work is welcome to.

I'm not sure if Telegraph is really doing the same thing.

As far as I can see, TelegraphCQ (which is distinct from Telegraph) has
nothing to do with a shm-based LISTEN/NOTIFY implementation.

-Neil

#5Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#1)
Re: pgsql-server/src backend/access/heap/heapam.c ...

Tom Lane wrote:

Fix LISTEN/NOTIFY race condition reported by Gavin Sherry. While a
really general fix might be difficult, I believe the only case where
AtCommit_Notify could see an uncommitted tuple is where the other guy
has just unlistened and not yet committed. The best solution seems to
be to just skip updating that tuple, on the assumption that the other
guy does not want to hear about the notification anyway. This is not
perfect --- if the other guy rolls back his unlisten instead of committing,
then he really should have gotten this notify. But to do that, we'd have
to wait to see if he commits or not, or make UNLISTEN hold exclusive lock
on pg_listener until commit. Either of these answers is deadlock-prone,
not to mention horrible for interactive performance. Do it this way

for now. (What happened to that project to do LISTEN/NOTIFY in memory
with no table, anyway?)

Added to TODO:

* Allow LISTEN/NOTIFY to store info in memory rather than tables

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073