On Wed, Aug 13, 2025, at 12:40 AM, SATYANARAYANA NARLAPURAM wrote:
> I couldn't find a previous discussion on a new GUC to globally enable 
> or disable logical subscription workers at the instance level. So 
> starting a new thread on this.
>

max_logical_replication_workers.

> In multi-region or high-availability setups, a promoted standby often 
> requires a controlled switchover before it should start applying 
> logical replication changes from upstream. Without such control, a 
> promoted standby may immediately attempt to connect to the publisher as 
> a logical subscriber, which can cause it to unexpectedly take over 
> replication slots, start pulling changes before the setup is ready, or 
> even conflict with the original primary that is still using those 
> slots. Disabling the subscription on the primary before promoting a 
> standby is not possible in all cases, for example during PITR or data 
> center outages.
> Providing a way to keep logical subscriptions globally disabled—via a 
> GUC setting—prior to promotion ensures that no changes are accidentally 
> pulled or applied before the system is fully prepared. This avoids race 
> conditions and the risk of data divergence.
>

Why do you need another GUC? The max_logical_replication_workers parameter is
useful for this exact scenario. For example, pg_createsubscriber uses it to not
start logical replication while converting a physical replica into a logical
one.

> I would like to propose adding a GUC with the following behavior:
>  1. Default value for the GUC is ON, same behavior as now without the 
> GUC 
>  2. When off, no new apply workers start and existing ones exit 
> gracefully similar to when subscription disabled
>  3. When turned on again, behavior will be the same as the current 
> behavior
>  4. This GUC shouldn't require a restart
>

That's the only point not covered by the current behavior. You don't explain
why it is a requirement.


-- 
Euler Taveira
EDB   https://www.enterprisedb.com/


Reply via email to