Re: BUG #15293: Stored Procedure Triggered by Logical Replication is Unable to use Notification Events

Marc Dean <marc.dean.jr@gmail.com>

From: Marc Dean <marc.dean.jr@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Sergei Kornilov <sk@zsrv.org>, Petr Jelinek <petr@2ndquadrant.com>, "michael.paul.powers@gmail.com" <michael.paul.powers@gmail.com>, "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2018-07-24T17:43:30Z
Lists: pgsql-bugs, pgsql-hackers
If Sergei is correct, I would volunteer to work on the patch. I am
completely new to the codebase but this issue affects me. According to the
documentation for `ProcessCompletedNotifies()` it should be called just
before going idle... so perhaps in src/backend/replication/logical/worker.c
at the tail end of `apply_handle_commit`? Again.. just looking at the
codebase today so if this is beyond beginner level I will assist w/ testing
instead.

On Tue, Jul 24, 2018 at 11:58 AM, Andres Freund <andres@anarazel.de> wrote:

> Hi,
>
> On 2018-07-24 16:19:45 +0300, Sergei Kornilov wrote:
> > I checked this bug and found reason: we do not notify backends about new
> events by call ProcessCompletedNotifies from logical worker.
> > New notify from regular backend does call ProcessCompletedNotifies: send
> signal to all listen backends and found new events for youself.
> > But i am not sure where is correct place for call
> ProcessCompletedNotifies in logical worker src/backend/replication/logical/worker.c
> and i can not provide patch.
>
> Peter, Petr, this is the second report of this issue. Anything?
>
> Greetings,
>
> Andres Freund
>
>

Commits

  1. Disallow LISTEN in background workers.

  2. Send NOTIFY signals during CommitTransaction.

  3. Make some efficiency improvements in LISTEN/NOTIFY.