Don't ERROR on PreallocXlogFiles() race condition.
Noah Misch <noah@leadboat.com>
Don't ERROR on PreallocXlogFiles() race condition. Before a restartpoint finishes PreallocXlogFiles(), a startup process KeepFileRestoredFromArchive() call can unlink the preallocated segment. If a CHECKPOINT sql command had elicited the restartpoint experiencing the race condition, that sql command failed. Moreover, the restartpoint omitted its log_checkpoints message and some inessential resource reclamation. Prevent the ERROR by skipping open() of the segment. Since these consequences are so minor, no back-patch. Discussion: https://postgr.es/m/20210202151416.GB3304930@rfd.leadboat.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/transam/xlog.c | modified | +56 −23 |
| src/backend/replication/walreceiver.c | modified | +1 −3 |
| src/include/access/xlog.h | modified | +1 −1 |
Discussion
- Race between KeepFileRestoredFromArchive() and restartpoint 15 messages · 2021-02-02 → 2022-08-04