Re: Parallel Index Scan vs BTP_DELETED and BTP_HALF_DEAD

From: Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Cc: Kuntal Ghosh <kuntalghosh(dot)2007(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Parallel Index Scan vs BTP_DELETED and BTP_HALF_DEAD
Date: 2017-12-13 01:32:32
Message-ID: CAEepm=0kds=+59b14wMegO1m21Z2G+beRgUTXByR6OxWW2Bnkw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

Here's a reproducer which enabled me to reach this stuck state:

pid | wait_event | query
-------+---------------+-----------------------------------------------------------------------------
64617 | | select pid, wait_event, query from
pg_stat_activity where state = 'active';
64619 | BufferPin | VACUUM jobs
64620 | ExecuteGather | SELECT COUNT(*) FROM jobs
64621 | ExecuteGather | SELECT COUNT(*) FROM jobs
64622 | ExecuteGather | SELECT COUNT(*) FROM jobs
64623 | ExecuteGather | SELECT COUNT(*) FROM jobs
84167 | BtreePage | SELECT COUNT(*) FROM jobs
84168 | BtreePage | SELECT COUNT(*) FROM jobs
96440 | | SELECT COUNT(*) FROM jobs
96438 | | SELECT COUNT(*) FROM jobs
96439 | | SELECT COUNT(*) FROM jobs
(11 rows)

The main thread deletes stuff in the middle of the key range (not sure
if this is important) and vacuum in a loop, and meanwhile 4 threads
(probably not important, might as well be 1) run Parallel Index Scans
over the whole range, in the hope of hitting the interesting case. In
the locked-up case I just saw now opaque->btpo_flags had the
BTP_DELETED bit set, not BTP_HALF_DEAD (I could tell because I added
logging). Clearly pages are periodically being marked half-dead but I
haven't yet managed to get an index scan to hit one of those.

--
Thomas Munro
http://www.enterprisedb.com

Attachment Content-Type Size
repro.c text/x-csrc 3.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Craig Ringer 2017-12-13 01:37:50 Re: proposal: alternative psql commands quit and exit
Previous Message Craig Ringer 2017-12-13 01:26:40 Re: proposal: alternative psql commands quit and exit