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 ------ master Details ------- https://git.postgresql.org/pg/commitdiff/cc33773482e879ea746256cc344ab029df1243d9 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(-)
