Remove overzealous assertion from PHJ.

We can't assert that we're the only process attached to a barrier after
BarrierArriveAndDetachExceptLast().  Although that'll be true almost
always, a late-starting parallel worker can attach very briefly (that
is, immediately detach after checking the phase) right at that moment.
BarrierArriveAndDetachExceptLast() already contains an assertion like
that, but it holds a spinlock preventing the race.  This thinko caused a
one-off failure on build farm animal chimaera.

Diagnosed-by: Melanie Plageman <melanieplageman@gmail.com>
Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/3590249.1680971629@sss.pgh.pa.us
This commit is contained in:
Thomas Munro 2023-04-13 09:19:54 +12:00
parent 21e6bf4ddd
commit b37d051b0e
1 changed files with 0 additions and 1 deletions

View File

@ -2115,7 +2115,6 @@ ExecParallelPrepHashTableForUnmatched(HashJoinState *hjstate)
/* Now we are alone with this batch. */
Assert(BarrierPhase(&batch->batch_barrier) == PHJ_BATCH_SCAN);
Assert(BarrierParticipants(&batch->batch_barrier) == 1);
/*
* Has another process decided to give up early and command all processes