Fix the check to limit sync workers.
We don't allow to invoke more sync workers once we have reached the sync worker limit per subscription. But the check to enforce this also doesn't allow to launch an apply worker if it gets restarted. This code was introduced by commitde43897122
but we caught the problem only with the test added by recent commitc91f71b9dc
which started failing occasionally in the buildfarm. As per buildfarm. Diagnosed-by: Amit Kapila, Masahiko Sawada, Tomas Vondra Author: Amit Kapila Backpatch-through: 10 Discussion: https://postgr.es/m/CAH2L28vddB_NFdRVpuyRBJEBWjz4BSyTB=_ektNRH8NJ1jf95g@mail.gmail.com https://postgr.es/m/f90d2b03-4462-ce95-a524-d91464e797c8@enterprisedb.com
This commit is contained in:
parent
0795da8695
commit
59348fbdeb
|
@ -372,11 +372,11 @@ retry:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we reached the sync worker limit per subscription, just exit
|
* We don't allow to invoke more sync workers once we have reached the sync
|
||||||
* silently as we might get here because of an otherwise harmless race
|
* worker limit per subscription. So, just return silently as we might get
|
||||||
* condition.
|
* here because of an otherwise harmless race condition.
|
||||||
*/
|
*/
|
||||||
if (nsyncworkers >= max_sync_workers_per_subscription)
|
if (OidIsValid(relid) && nsyncworkers >= max_sync_workers_per_subscription)
|
||||||
{
|
{
|
||||||
LWLockRelease(LogicalRepWorkerLock);
|
LWLockRelease(LogicalRepWorkerLock);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue