]> granicus.if.org Git - postgresql/commit
Track the timeline associated with minRecoveryPoint, for more sanity checks.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 4 Dec 2012 09:24:28 +0000 (11:24 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 4 Dec 2012 09:31:00 +0000 (11:31 +0200)
commit5ce108bf320d23070c53d3437fd3dc799a97310c
treec151a71614a9c56edca50ae1b11d242d3e692fcb
parent2f227656076aded21673fe4b5a831fe28e76c785
Track the timeline associated with minRecoveryPoint, for more sanity checks.

This allows recovery to notice certain incorrect recovery scenarios.
If a server has recovered to point X on timeline 5, and you restart
recovery, it better be on timeline 5 when it reaches point X again, not on
some timeline with a higher ID. This can happen e.g if you a standby server
is shut down, a new timeline appears in the WAL archive, and the standby
server is restarted. It will try to follow the new timeline, which is wrong
because some WAL on the old timeline was already replayed before shutdown.

Requires an initdb (or at least pg_resetxlog), because this adds a field to
the control file.
src/backend/access/transam/xlog.c
src/bin/pg_controldata/pg_controldata.c
src/bin/pg_resetxlog/pg_resetxlog.c
src/include/catalog/pg_control.h