| From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
|---|---|
| To: | Andres Freund <andres(at)anarazel(dot)de> |
| Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andrey <parihaaraka(at)gmail(dot)com>, Pg Bugs <pgsql-bugs(at)postgresql(dot)org> |
| Subject: | Re: NOTIFY does not work as expected |
| Date: | 2018-07-04 22:11:03 |
| Message-ID: | CAMkU=1zCfdxGBcm7N=Twr7bz4KTmYZbEhq=f-VaNmP6d4ry-Tw@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
On Wed, Jul 4, 2018 at 2:30 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> Hi,
>
>
> On 2018-07-04 08:50:12 -0400, Jeff Janes wrote:
> > Reading through the comments touched by the commit, it seems obvious what
> > the bug is. It says "cause the processing to occur just before we next
> go
> > idle", but also says "This is called just *after* waiting for a frontend
> > command", which is too late to be "before we next go idle"
>
> I've not looked at this issue in depth yet. So I might be completely off
> base. But I'm confused by your comment - we're doing it *after*,
> because we do a non-blocking read. And the latch will notify us
> (event.events & WL_LATCH_SET) if there was a read.
>
We get a signal while we are busy. We set the flag and the latch. The
latch
wakes us up, but since we are busy (in a transaction, specifically) we don't
do anything. Later, the transaction ends and we are about to go idle, but
no one checks the flag again. We start a read using the latch mechanism,
but
the flag notifyInterruptPending being set true from a now-long-gone signal
is not on
the list of things the latch wakes us for. It is technically a
non-blocking read but from
the perspective if the pending notify message it is a blocking read, unless
another
signal comes along and rescues us.
Cheers,
Jeff
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Grigory Smolkin | 2018-07-05 15:05:17 | long analyze, libc bug and libicu |
| Previous Message | Andres Freund | 2018-07-04 18:30:55 | Re: NOTIFY does not work as expected |