pgsql: Fix remote_apply waits with wal_receiver_status_interval set to - Mailing list pgsql-committers

From Fujii Masao
Subject pgsql: Fix remote_apply waits with wal_receiver_status_interval set to
Date
Msg-id E1xEOdq-00000000ftZ-2R0U@gemulon.postgresql.org
Whole thread
List pgsql-committers
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 <vaibhav.dalvi@enterprisedb.com>
Reviewed-by: Ashutosh Sharma <ashu.coek88@gmail.com>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CA+vB=AHKUhc9GCDwoLr=SshTBCQG09kp8TEXew50UtD5rYqowg@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(-)


pgsql-committers by date:

Previous
From: Fujii Masao
Date:
Subject: pgsql: Fix remote_apply waits with wal_receiver_status_interval set to
Next
From: Fujii Masao
Date:
Subject: pgsql: psql: Improve tab completion for GRANT/REVOKE CREATE