-
- Downloads
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.
Showing
- src/backend/access/transam/xlog.c 22 additions, 5 deletionssrc/backend/access/transam/xlog.c
- src/backend/replication/basebackup.c 193 additions, 41 deletionssrc/backend/replication/basebackup.c
- src/backend/replication/walsender.c 1 addition, 14 deletionssrc/backend/replication/walsender.c
- src/include/access/xlog.h 1 addition, 1 deletionsrc/include/access/xlog.h
Loading
Please register or sign in to comment