]> granicus.if.org Git - postgresql/commit
Avoid acquiring spinlock when checking if recovery has finished, for speed.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 22 Nov 2013 10:53:59 +0000 (12:53 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 22 Nov 2013 11:07:23 +0000 (13:07 +0200)
commit1a3d104475ce01326fc00601ed66ac4d658e37e5
treee20102123012e30c84b9d1be83f184f62c505742
parentf4482a542c30034c7871fd35050128823ef5c6d5
Avoid acquiring spinlock when checking if recovery has finished, for speed.

RecoveryIsInProgress() can be called very frequently. During normal
operation, it just checks a backend-local variable and returns quickly,
but during hot standby, it checks a spinlock-protected shared variable.
Those spinlock acquisitions can become a point of contention on a busy
hot standby system.

Replace the spinlock acquisition with a memory barrier.

Per discussion with Andres Freund, Ants Aasma and Merlin Moncure.
src/backend/access/transam/xlog.c [changed mode: 0644->0755]