diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-01-03 19:50:46 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-01-03 19:50:46 +0200 |
commit | b4c99c9af379157a6224b0a4c01da22192633adf (patch) | |
tree | af7afa18d74818ed7b5e1fb9d3c2aef14f2ff6fc /src/backend/access/gist/gistproc.c | |
parent | faf1b1bd71842e49e4f8294e1180fd6b3f120928 (diff) | |
download | postgresql-b4c99c9af379157a6224b0a4c01da22192633adf.tar.gz postgresql-b4c99c9af379157a6224b0a4c01da22192633adf.zip |
Tolerate timeline switches while "pg_basebackup -X fetch" is running.
If you take a base backup from a standby server with "pg_basebackup -X
fetch", and the timeline switches while the backup is being taken, the
backup used to fail with an error "requested WAL segment %s has already
been removed". This is because the server-side code that sends over the
required WAL files would not construct the WAL filename with the correct
timeline after a switch.
Fix that by using readdir() to scan pg_xlog for all the WAL segments in the
range, regardless of timeline.
Also, include all timeline history files in the backup, if taken with
"-X fetch". That fixes another related bug: If a timeline switch happened
just before the backup was initiated in a standby, the WAL segment
containing the initial checkpoint record contains WAL from the older
timeline too. Recovery will not accept that without a timeline history file
that lists the older timeline.
Backpatch to 9.2. Versions prior to that were not affected as you could not
take a base backup from a standby before 9.2.
Diffstat (limited to 'src/backend/access/gist/gistproc.c')
0 files changed, 0 insertions, 0 deletions