RE: Exit walsender before confirming remote flush in logical replication
Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>
From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Andres Freund' <andres@anarazel.de>, Amit Kapila <amit.kapila16@gmail.com>
Cc: Masahiko Sawada <sawada.mshk@gmail.com>, Michael Paquier <michael@paquier.xyz>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, "dilipbalaut@gmail.com" <dilipbalaut@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2023-02-07T14:41:13Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add wal_sender_shutdown_timeout GUC to limit shutdown wait for replication
- a8f45dee9176 19 (unreleased) landed
-
pg_upgrade: Add --copy option
- 746915c68669 16.0 cited
-
Prevent possibility of panics during shutdown checkpoint.
- c6c333436491 10.0 cited
-
Support clean switchover.
- 985bd7d49726 9.4.0 cited
Attachments
- 0001-Time-delayed-logical-replication-subscriber.patch (application/octet-stream) patch 0001
- 0002-Extend-START_REPLICATION-command-to-accept-walsender.patch (application/octet-stream) patch 0002
Dear Andres, Amit, > On 2023-02-07 09:00:13 +0530, Amit Kapila wrote: > > On Tue, Feb 7, 2023 at 2:04 AM Andres Freund <andres@anarazel.de> wrote: > > > How about we make it an option in START_REPLICATION? Delayed logical > rep can > > > toggle that on by default. > > > Works for me. So, when this option is set in START_REPLICATION > > message, walsender will set some flag and allow itself to exit at > > shutdown without waiting for WAL to be sent? > > Yes. I think that might be useful in other situations as well, but we don't > need to make those configurable initially. But I imagine it'd be useful to set > things up so that non-HA physical replicas don't delay shutdown, particularly > if they're geographically far away. Based on the discussion, I made a patch for adding a walsender option exit_before_confirming to the START_STREAMING replication command. It can be used for both physical and logical replication. I made the patch with extendibility - it allows adding further options. And better naming are very welcome. For physical replication, the grammar was slightly changed like a logical one. It can now accept options but currently, only one option is allowed. And it is not used in normal streaming replication. For logical replication, the option is combined with options for the output plugin. Of course, we can modify the API to better style. 0001 patch was ported from time-delayed logical replication thread[1], which uses the added option. When the min_apply_delay option is specified and publisher seems to be PG16 or later, the apply worker sends a START_REPLICATION query with exit_before_confirming = true. And the worker will reboot and send START_REPLICATION again when min_apply_delay is changed from zero to a non-zero value or non-zero to zero. Note that I removed version number because the approach is completely changed. [1]: https://www.postgresql.org/message-id/TYCPR01MB8373BA483A6D2C924C600968EDDB9@TYCPR01MB8373.jpnprd01.prod.outlook.com Best Regards, Hayato Kuroda FUJITSU LIMITED