From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Petr Jelinek <petr(dot)jelinek(at)2ndquadrant(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)postgresql(dot)org, Petr Jelinek <petr(at)2ndquadrant(dot)com>, Peter Eisentraut <peter_e(at)gmx(dot)net> |
Subject: | Re: libpqrcv_PQexec() seems to violate latch protocol |
Date: | 2017-06-06 21:42:37 |
Message-ID: | 20170606214237.xgcyfw64tik3sd75@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2017-06-06 23:24:50 +0200, Petr Jelinek wrote:
> On 06/06/17 23:17, Andres Freund wrote:
> > Right. I found a couple more instance of similarly iffy, although not
> > quite as broken, patterns in launcher.c. It's easy to get this wrong,
> > but it's a lot easy if you do it differently everywhere you use a
> > latch. It's not good if code in the same file, by the same author(s),
> > has different ways of using latches.
>
> Huh? I see same pattern everywhere in launcher.c, what am I missing?
WaitForReplicationWorkerAttach:
while (...)
CHECK_FOR_INTERRUPTS();
/* other stuff including returns */
WaitLatch()
WL_POSTMASTER_DEATH
ResetLatch()
logicalrep_worker_stop loop 1:
while (...)
/* other stuff */
CHECK_FOR_INTERRUPTS()
WaitLatch()
POSTMASTER_DEATH
ResetLatch()
/* other stuff including returns */
logicalrep_worker_stop loop 1:
while (...)
/* other stuff including returns */
CHECK_FOR_INTERRUPTS();
WaitLatch()
WL_POSTMASTER_DEATH
ResetLatch()
ApplyLauncherMain:
while (!got_SIGTERM)
/* lots other stuff */
WaitLatch()
WL_POSTMASTER_DEATH
/* some other stuff */
ResetLatch()
(note no CFI)
they're not hugely different, but subtely there are differences.
Sometimes you're guaranteed to check for interrupts after resetting the
latch, in other cases not. Sometimes expensive-ish things happen before
a CFI...
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Mike Palmiotto | 2017-06-06 21:44:16 | Re: BUG #14682: row level security not work with partitioned table |
Previous Message | Robert Haas | 2017-06-06 21:42:35 | Re: PG10 transition tables, wCTEs and multiple operations on the same table |