pgsql: Add wal_sender_shutdown_timeout GUC to limit shutdown wait for r - Mailing list pgsql-committers

From Fujii Masao
Subject pgsql: Add wal_sender_shutdown_timeout GUC to limit shutdown wait for r
Date
Msg-id E1w9Zp0-003AR7-17@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Add wal_sender_shutdown_timeout GUC to limit shutdown wait for replication

Previously, during shutdown, walsenders always waited until all pending data
was replicated to receivers. This ensures sender and receiver stay in sync
after shutdown, which is important for physical replication switchovers,
but it can significantly delay shutdown. For example, in logical replication,
if apply workers are blocked on locks, walsenders may wait until those locks
are released, preventing shutdown from completing for a long time.

This commit introduces a new GUC, wal_sender_shutdown_timeout,
which specifies the maximum time a walsender waits during shutdown for all
pending data to be replicated. When set, shutdown completes once all data is
replicated or the timeout expires. A value of -1 (the default) disables
the timeout.

This can reduce shutdown time when replication is slow or stalled. However,
if the timeout is reached, the sender and receiver may be left out of sync,
which can be problematic for physical replication switchovers.

Author: Andrey Silitskiy <a.silitskiy@postgrespro.ru>
Author: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Reviewed-by: Dilip Kumar <dilipbalaut@gmail.com>
Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Reviewed-by: Takamichi Osumi <osumi.takamichi@fujitsu.com>
Reviewed-by: Peter Smith <smithpb2250@gmail.com>
Reviewed-by: Greg Sabino Mullane <htamfids@gmail.com>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Reviewed-by: Vitaly Davydov <v.davydov@postgrespro.ru>
Reviewed-by: Ronan Dunklau <ronan@dunklau.fr>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Japin Li <japinli@hotmail.com>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/TYAPR01MB586668E50FC2447AD7F92491F5E89@TYAPR01MB5866.jpnprd01.prod.outlook.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/a8f45dee91768cf1447ffaf2527e499e75a194c3

Modified Files
--------------
doc/src/sgml/config.sgml                           |  42 +++++
doc/src/sgml/high-availability.sgml                |  10 +-
src/backend/replication/walsender.c                | 135 +++++++++++++-
src/backend/utils/misc/guc_parameters.dat          |  10 +
src/backend/utils/misc/postgresql.conf.sample      |   1 +
src/include/replication/walsender.h                |   1 +
src/test/subscription/meson.build                  |   1 +
.../subscription/t/038_walsnd_shutdown_timeout.pl  | 201 +++++++++++++++++++++
8 files changed, 395 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: John Naylor
Date:
Subject: pgsql: Fix unportable use of __builtin_constant_p
Next
From: Richard Guo
Date:
Subject: pgsql: Fix collation handling for grouping keys in eager aggregation