Fix issue with WAL archiving in standby.
authorFujii Masao
Thu, 9 Sep 2021 14:58:05 +0000 (23:58 +0900)
committerFujii Masao
Thu, 9 Sep 2021 14:58:05 +0000 (23:58 +0900)
commitb5ec22bf5e8f19964f7c7d7ef357ff947a38c7fc
tree68ce42d74f7d8a68a4bd841058a61271e06b3bd6
parent52c300df323e8ebb3d0613baa4711179d9f342f3
Fix issue with WAL archiving in standby.

Previously, walreceiver always closed the currently-opened WAL segment
and created its archive notification file, after it finished writing
the current segment up and received any WAL data that should be
written into the next segment. If walreceiver exited just before
any WAL data in the next segment arrived at standby, it did not
create the archive notification file of the current segment
even though that's known completed. This behavior could cause
WAL archiving of the segment to be delayed until subsequent
restartpoints or checkpoints created its notification file.

To fix the issue, this commit changes walreceiver so that it creates
an archive notification file of a current WAL segment immediately
if that's known completed before receiving next WAL data.

Back-patch to all supported branches.

Reported-by: Kyotaro Horiguchi
Author: Fujii Masao
Reviewed-by: Kyotaro Horiguchi
Discussion: https://postgr.es/m/20200630.165503.1465894182551545886[email protected]
src/backend/replication/walreceiver.c