pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Noah Misch <noah@leadboat.com>
Cc: Francesco Degrassi <francesco.degrassi@optionfactory.net>
Cc: pgsql-bugs@lists.postgresql.org
Subject: Re: Leader backend hang on IPC/ParallelFinish when LWLock held at parallel query start
Date: Wed, 18 Sep 2024 00:23:42 -0400
Message-ID: <1737570.1726633422@sss.pgh.pa.us> (raw)
In-Reply-To: <20240918030159.2a.nmisch@google.com>
References: <CAC-SaSzHUKT=vZJ8MPxYdC_URPfax+yoA1hKTcF4ROz_Q6z0_Q@mail.gmail.com>
	<20240918030159.2a.nmisch@google.com>

Noah Misch <noah@leadboat.com> writes:
> On Mon, Sep 16, 2024 at 09:35:13PM +0200, Francesco Degrassi wrote:
>> The problem appears to manifest when a backend is holding an LWLock and
>> starting a query, and the planner chooses a parallel plan for the
>> latter.

> Thanks for the detailed report and for the fix.

I do not have much faith in this patch.  It assumes that the
condition "interrupts can be processed" is the same at plan time and
execution time.  For plans extracted from the plan cache, there seems
little reason to assume that must be true.  The proposed test case
cannot trigger that (today anyway) because SQL-language functions
don't deal in cached plans, but I suspect it could be broken with a
test case using a plpgsql function instead.

I actually think that the problem is somewhere upstream of here:
what in the world are we doing invoking planning and execution of
arbitrary queries in a context where interrupts are held off?
That seems certain to fail in multiple ways besides parallel
workers not working.  I think we need to fix whatever code
believes that that could be OK.  And maybe then insert
"Assert(INTERRUPTS_CAN_BE_PROCESSED())" at planner start
and executor start.

			regards, tom lane





view thread (18+ messages)  latest in thread

Message-ID: <1737570.1726633422@sss.pgh.pa.us>
Permalink:  ../1737570.1726633422@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/1737570.1726633422@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: tgl@sss.pgh.pa.us, noah@leadboat.com, francesco.degrassi@optionfactory.net, pgsql-bugs@lists.postgresql.org
  Subject: Re: Leader backend hang on IPC/ParallelFinish when LWLock held at parallel query start
  In-Reply-To: <1737570.1726633422@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox