On 12/5/19 4:37 AM, Amit Kapila wrote: > On Wed, Dec 4, 2019 at 9:51 PM Andrew Dunstan > <andrew.duns...@2ndquadrant.com> wrote: >> On Wed, Dec 4, 2019 at 12:12 AM Tom Lane <t...@sss.pgh.pa.us> wrote: >>> Amit Kapila <amit.kapil...@gmail.com> writes: >>>> On Tue, Dec 3, 2019 at 10:10 PM Tom Lane <t...@sss.pgh.pa.us> wrote: >>>>> Hmm ... just looking at the code again, could it be that there's >>>>> no well-placed CHECK_FOR_INTERRUPTS? Andrew, could you see if >>>>> injecting one in what 790026972 added to postgres.c helps? >>>> I also tried to analyze this failure and it seems this is a good bet, >>>> but I am also wondering why we have never seen such a timing issue in >>>> other somewhat similar tests. For ex., one with comment (# >>>> Cross-backend notification delivery.). Do they have a better way of >>>> ensuring that the notification will be received or is it purely >>>> coincidental that they haven't seen such a symptom? >>> TBH, my bet is that this *won't* fix it, but it seemed like an easy >>> thing to test. For this to fix it, you'd have to suppose that we >>> never do a CHECK_FOR_INTERRUPTS during a COMMIT command, which is >>> improbable at best. >>> >> >> You win your bet. Tried this on frogmouth and it still failed. >> > IIUC, this means that commit (step l2commit) is finishing before the > notify signal is reached that session. If so, can we at least confirm > that by adding something like select pg_sleep(1) in that step? So, > l2commit will be: step "l2commit" { SELECT pg_sleep(1); COMMIT; }. I > think we can try by increasing sleep time as well to confirm the > behavior if required. >
Yeah, with the sleep in there the NOTIFY is seen. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services