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 <and...@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/tycpr01mb8373ba483a6d2c924c600968ed...@tycpr01mb8373.jpnprd01.prod.outlook.com Best Regards, Hayato Kuroda FUJITSU LIMITED
0001-Time-delayed-logical-replication-subscriber.patch
Description: 0001-Time-delayed-logical-replication-subscriber.patch
0002-Extend-START_REPLICATION-command-to-accept-walsender.patch
Description: 0002-Extend-START_REPLICATION-command-to-accept-walsender.patch