Re: promotion related handling in pg_sync_replication_slots()
От | Amit Kapila |
---|---|
Тема | Re: promotion related handling in pg_sync_replication_slots() |
Дата | |
Msg-id | CAA4eK1LehopLL08tW7ApG54jNcAzz_Z4-UFcWHn0718bj1Y6_g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: promotion related handling in pg_sync_replication_slots() (shveta malik <shveta.malik@gmail.com>) |
Список | pgsql-hackers |
On Fri, Apr 12, 2024 at 7:47 AM shveta malik <shveta.malik@gmail.com> wrote: > > On Sat, Apr 6, 2024 at 11:49 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > Few comments: > > ============== > > 1. > > void > > SyncReplicationSlots(WalReceiverConn *wrconn) > > { > > + /* > > + * Startup process signaled the slot sync to stop, so if meanwhile user > > + * has invoked slot sync SQL function, simply return. > > + */ > > + SpinLockAcquire(&SlotSyncCtx->mutex); > > + if (SlotSyncCtx->stopSignaled) > > + { > > + ereport(LOG, > > + errmsg("skipping slot synchronization as slot sync shutdown is > > signaled during promotion")); > > + > > + SpinLockRelease(&SlotSyncCtx->mutex); > > + return; > > + } > > + SpinLockRelease(&SlotSyncCtx->mutex); > > > > There is a race condition with this code. Say during promotion > > ShutDownSlotSync() is just before setting this flag and the user has > > invoked pg_sync_replication_slots() and passed this check but still > > didn't set the SlotSyncCtx->syncing flag. So, now, the promotion would > > recognize that there is slot sync going on in parallel, and slot sync > > wouldn't know that the promotion is in progress. > > Did you mean that now, the promotion *would not* recognize... > Right. > I see, I will fix this. > Thanks. -- With Regards, Amit Kapila.
В списке pgsql-hackers по дате отправления: