From b37d051b0e59e4324e346655a27509507813db79 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Thu, 13 Apr 2023 09:19:54 +1200 Subject: [PATCH] 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 Reported-by: Tom Lane Discussion: https://postgr.es/m/3590249.1680971629@sss.pgh.pa.us --- src/backend/executor/nodeHash.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index a45bd3a315..2e13ed17e1 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -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