Prevent WAL files created by pg_basebackup -x/X from being archived again.
Andres Freund <andres@anarazel.de>
Prevent WAL files created by pg_basebackup -x/X from being archived again. WAL (and timeline history) files created by pg_basebackup did not maintain the new base backup's archive status. That's currently not a problem if the new node is used as a standby - but if that node is promoted all still existing files can get archived again. With a high wal_keep_segment settings that can happen a significant time later - which is quite confusing. Change both the backend (for the -x/-X fetch case) and pg_basebackup (for -X stream) itself to always mark WAL/timeline files included in the base backup as .done. That's in line with walreceiver.c doing so. The verbosity of the pg_basebackup changes show pretty clearly that it needs some refactoring, but that'd result in not be backpatchable changes. Backpatch to 9.1 where pg_basebackup was introduced. Discussion: 20141205002854.GE21964@awork2.anarazel.de
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/replication/basebackup.c | modified | +24 −0 |
| src/bin/pg_basebackup/pg_basebackup.c | modified | +23 −10 |
| src/bin/pg_basebackup/pg_receivexlog.c | modified | +2 −1 |
| src/bin/pg_basebackup/receivelog.c | modified | +64 −10 |
| src/bin/pg_basebackup/receivelog.h | modified | +2 −1 |