Re: BUG #15290: Stuck Parallel Index Scan query
Victor Yegorov <vyegorov@gmail.com>
From: Victor Yegorov <vyegorov@gmail.com>
To: thomas.munro@enterprisedb.com
Cc: pgsql-bugs@lists.postgresql.org
Date: 2018-07-23T11:42:52Z
Lists: pgsql-bugs
пн, 23 июл. 2018 г. в 11:47, Thomas Munro <thomas.munro@enterprisedb.com>: > On Mon, Jul 23, 2018 at 7:57 PM, Victor Yegorov <vyegorov@gmail.com> > wrote: > > - `ERROR: canceling statement due to conflict with recovery`, happened > > right when our problematic query started, same user > > Ok, so that would explain how the master was cancelled. In 2877's > stack we see that it was aborting here: > Right: ERROR: canceling statement due to conflict with recovery DETAIL: User was holding shared buffer pin for too long. > > #11 0x00007f539697ba5e in PostgresMain (argc=1, > argv=argv@entry=0x7f5398d1bbc8, dbname=0x7f5398d1bb98 "coub", > username=0x7f5398d1bbb0 "app") at > > /build/postgresql-10-U6N320/postgresql-10-10.4/build/../src/backend/tcop/postgres.c:3879 > > That line calls AbortCurrentTransaction(), just after the call to > EmitErrorReport() that wrote something in your log. Andres's theory > (interrupts 'held') seems promising... perhaps there could be a bug > where parallel index scans leak a share-locked page or something like > that. I tried to reproduce this a bit, but no cigar so far. I wonder > if there could be something about your bloated index that reaches > buggy behaviour... > > If you happen to have a core file for a worker that is waiting in > ConditionVariableSleep(), or it happens again, you'd be able to see if > an LWLock is causing this by printing num_held_lwlocks. > No, we do not have core files around. And so far I was not able to reproduce this situation. I will keep monitoring. In case I'll hit it again — what else (except for num_held_lwlocks) should I check for? -- Victor Yegorov
Commits
-
Fix the buffer release order for parallel index scans.
- ff8ce0b79009 10.5 landed
- 8ce29bb4f0df 12.0 landed