Fix remote_apply waits with wal_receiver_status_interval set to zero With synchronous_commit = remote_apply, a commit could remain blocked even after the synchronous standby had applied it when wal_receiver_status_interval was set to zero. With both wal_sender_timeout and wal_receiver_timeout disabled, the wait could last indefinitely.
Commit 400a790a48e introduced this regression while avoiding unnecessary duplicate standby status replies. It changed apply notifications from forced replies to replies that check for WAL position changes. However, XLogWalRcvSendReply() still returned early for non-forced replies when wal_receiver_status_interval was zero, before checking the apply position. Fix this by allowing apply-notification requests to bypass the early return while preserving the existing checks that suppress unnecessary duplicate replies. Author: Vaibhav Dalvi <[email protected]> Reviewed-by: Ashutosh Sharma <[email protected]> Reviewed-by: Fujii Masao <[email protected]> Discussion: https://postgr.es/m/CA+vB=AHKUhc9GCDwoLr=sshtbcqg09kp8texew50utd5ryq...@mail.gmail.com Backpatch-through: 19 Branch ------ REL_19_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/00dfee4fd743614c766cbd1d7a524163c225905a Modified Files -------------- src/backend/replication/walreceiver.c | 11 ++-- src/test/recovery/meson.build | 1 + .../recovery/t/059_remote_apply_status_interval.pl | 68 ++++++++++++++++++++++ 3 files changed, 75 insertions(+), 5 deletions(-)
