Seems I was too optimistic in supposing that sinval's maxMsgNum could be
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 20 Jun 2008 00:24:53 +0000 (00:24 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 20 Jun 2008 00:24:53 +0000 (00:24 +0000)
commit6e73bb7f20ede97a5daa5a875c468162de179d1c
tree6fccc4ae15bbd824b45b7e7fbd00e60aecf12b0b
parent2665f25af37dd3c550bd22c3c8805062bcc4f46b
Seems I was too optimistic in supposing that sinval's maxMsgNum could be
read and written without a lock.  The value itself is atomic, sure, but on
processors with weak memory ordering it's possible for a reader to see the
value change before it sees the associated message written into the buffer
array.  Fix by introducing a spinlock that's used just to read and write
maxMsgNum.  (We could do this with less overhead if we recognized a concept
of "memory access barrier"; is it worth introducing such a thing?  At the
moment probably not --- I can't measure any clear slowdown from adding the
spinlock, so this solution is probably fine.)  Per buildfarm results.
src/backend/storage/ipc/sinvaladt.c