I wrote: > I think it would be possible to fix it in a less invasive way by taking > and releasing the ControlLock an extra time in SimpleLruReadPage and > SimpleLruWritePage. What's indeterminate about that is the performance > cost.
Attached is an alternative patch that does it this way. I realized that we could use LWLockConditionalAcquire to usually avoid any extra lock traffic, so the performance cost may be negligible except under the very heaviest of loads. I still like the bigger patch for 8.2 and forward, because it's a lot cleaner, but this seems like a credible alternative for 8.1 and back branches. Comments? regards, tom lane
binjbJK9x6skx.bin
Description: slru-race-2.patch
---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster