Add new function WaitForParallelWorkersToAttach.
Once this function has been called, we know that all workers have
started and attached to their error queues -- so if any of them
subsequently exit uncleanly, we'll be sure to throw an ERROR promptly.
Otherwise, users of the ParallelContext machinery must be careful not
to wait forever for a worker that has failed to start. Parallel query
manages to work without needing this for reasons explained in new
comments added by this patch, but it's a useful primitive for other
parallel operations, such as the pending patch to make creating a
btree index run in parallel.
Amit Kapila, revised by me. Additional review by Peter Geoghegan.
src/backend/access/transam/parallel.c | 152 +++++++++++++++++++++++++++++++--
src/backend/executor/nodeGather.c | 9 +-
src/backend/executor/nodeGatherMerge.c | 9 +-
src/include/access/parallel.h | 4 +-
4 files changed, 163 insertions(+), 11 deletions(-)