Re: NOTIFY does not work as expected
parihaaraka <parihaaraka@gmail.com>
From: Andrey <parihaaraka@gmail.com>
To: Jeff Janes <jeff.janes@gmail.com>
Cc: Pg Bugs <pgsql-bugs@postgresql.org>
Date: 2018-07-03T04:54:02Z
Lists: pgsql-bugs
man: "... if a listening session receives a notification signal while it is within a transaction, the notification event will not be delivered to its connected client until _just after_ the transaction is completed (either committed or aborted)." Expected behavior is to deliver notification after pg_sleep is finished. Currently the one may hold opened connection (being idle and listening socket) for a long time, close it and never deliver the notification (if was busy while being notified). All delivering problems were about overflowed queue, merging notifications and transactions handling. If we must not rely on delivering at all, then NOTIFY makes no sense. вт, 3 июля 2018 г. в 3:37, Jeff Janes <jeff.janes@gmail.com>: > On Mon, Jul 2, 2018 at 4:33 PM, Andrey <parihaaraka@gmail.com> wrote: > >> PostgreSQL 9.6.9, 10.4 (broken): >> A: listen test; >> A: select pg_sleep(5); >> 1 >> 2 >> B: notify test, 'test1'; >> 3 >> 4 >> 5 >> A: done >> 6 >> 7 >> 8 >> 9 >> B: notify test, 'test2'; >> A: >> * notification received: >> server process id: 2837 >> channel: test >> payload: test >> * notification received: >> server process id: 2837 >> channel: test >> payload: test2 >> >> PostgreSQL 9.6.2 and earlier (workds as expected) >> A: listen test; >> A: select pg_sleep(5); >> 1 >> 2 >> B: notify test, 'test1'; >> 3 >> 4 >> 5 >> A: done >> A: >> * notification received: >> server process id: 2837 >> channel: test >> payload: test >> 6 >> 7 >> 8 >> 9 >> B: notify test, 'test2'; >> A: >> * notification received: >> server process id: 2837 >> channel: test >> payload: test2 >> > > I don't think this is a bug. I don't see that the docs promise one > behavior over the other, so it is really a dealer's choice. Also, I can't > reliably reproduce the reported 9.6.2 behavior on my own 9.6.2 server. > > Cheers, > > Jeff >
Commits
-
Client-side fixes for delayed NOTIFY receipt.
- ecc59e31a81e 10.6 landed
- d30d27a52818 11.1 landed
- ac3be116a798 9.5.15 landed
- 4247db62522f 12.0 landed
- 34aad21cbf03 9.6.11 landed
-
Server-side fix for delayed NOTIFY and SIGTERM processing.
- f4941666afc6 9.5.15 landed
- cbab94077e12 9.6.11 landed
- 7aaeb7b45ac7 11.1 landed
- 3bdef6d21131 10.6 landed
- 2ddb9149d14d 12.0 landed
-
Introduce and use infrastructure for interrupt processing during client reads.
- 4f85fde8eb86 9.5.0 cited