Heikki Linnakangas <[email protected]> writes:
> There's a race condition between a backend running queries in hot 
> standby mode, and restoring a full-page image from a WAL record. It's 
> present in all supported versions.

> I can think of two ways to fix this:

> 1. Have ReadBufferExtended lock the page in RBM_ZERO mode, before 
> returning it. That makes the API inconsistent, as the function would 
> sometimes lock the page, and sometimes not.

Ugh.

> 2. When ReadBufferExtended doesn't find the page in cache, it returns 
> the buffer in !BM_VALID state (i.e. still in I/O in-progress state). 
> Require the caller to call a second function, after locking the page, to 
> finish the I/O.

Not great either.  What about an RBM_NOERROR mode that is like RBM_ZERO
in terms of handling error conditions, but does not forcibly zero the page
if it's already valid?

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to