Re: BUG #15290: Stuck Parallel Index Scan query - Mailing list pgsql-bugs

From Andres Freund
Subject Re: BUG #15290: Stuck Parallel Index Scan query
Date
Msg-id 20180725020805.z56klx2dqewggrua@alap3.anarazel.de
Whole thread Raw
In response to Re: BUG #15290: Stuck Parallel Index Scan query  (Thomas Munro <thomas.munro@enterprisedb.com>)
Responses Re: BUG #15290: Stuck Parallel Index Scan query  (Thomas Munro <thomas.munro@enterprisedb.com>)
List pgsql-bugs
On 2018-07-25 14:04:11 +1200, Thomas Munro wrote:
> Ok, I see it:
> 
>                         /* check for interrupts while we're not
> holding any buffer lock */
>                         CHECK_FOR_INTERRUPTS();
>                         /* step right one page */
>                         so->currPos.buf = _bt_getbuf(rel, blkno, BT_READ);
>                         ...
>                         /* nope, keep going */
>                         if (scan->parallel_scan != NULL)
>                         {
>                                 status = _bt_parallel_seize(scan, &blkno);
> 
> That leads to a condition variable wait, while we still hold that
> buffer lock.  That prevents interrupts.  Oops.

Heh, guessed right.  I kinda wonder if we shouldn't add a
CHECK_FOR_INTERRUPTS_FOR_REALZ() that asserts if interrupts aren't
held. There are plenty places where we rely on that being the case, for
correctness.

Greetings,

Andres Freund


pgsql-bugs by date:

Previous
From: Thomas Munro
Date:
Subject: Re: BUG #15290: Stuck Parallel Index Scan query
Next
From: Thomas Munro
Date:
Subject: Re: BUG #15290: Stuck Parallel Index Scan query