]> granicus.if.org Git - postgresql/commit
Block interrupts during HandleParallelMessages().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Aug 2016 20:39:16 +0000 (16:39 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Aug 2016 20:39:16 +0000 (16:39 -0400)
commitb6a97b91ffe8e0c6b6557eb4aef85bcbd423ad5f
tree43d0465ba5d05fbed1cfeefe79bcf0ddd22e427f
parentc4d3a039f0ea735c4c21831a74b753678c0e6794
Block interrupts during HandleParallelMessages().

As noted by Alvaro, there are CHECK_FOR_INTERRUPTS() calls in the shm_mq.c
functions called by HandleParallelMessages().  I believe they're all
unreachable since we always pass nowait = true, but it doesn't seem like
a great idea to assume that no such call will ever be reachable from
HandleParallelMessages().  If that did happen, there would be a risk of a
recursive call to HandleParallelMessages(), which it does not appear to be
designed for --- for example, there's nothing that would prevent
out-of-order processing of received messages.  And certainly such cases
cannot easily be tested.  So let's prevent it by holding off interrupts for
the duration of the function.  Back-patch to 9.5 which contains identical
code.

Discussion: <14869.1470083848@sss.pgh.pa.us>
src/backend/access/transam/parallel.c