Re: Copy function for logical replication slots
От | Michael Paquier |
---|---|
Тема | Re: Copy function for logical replication slots |
Дата | |
Msg-id | 20190220032613.GC15532@paquier.xyz обсуждение исходный текст |
Ответ на | Re: Copy function for logical replication slots (Masahiko Sawada <sawada.mshk@gmail.com>) |
Ответы |
Re: Copy function for logical replication slots
|
Список | pgsql-hackers |
On Tue, Feb 19, 2019 at 05:09:33PM +0900, Masahiko Sawada wrote: > On Tue, Feb 19, 2019 at 1:28 AM Andres Freund <andres@anarazel.de> wrote: >> Well, I'd not thought we'd do it without acquiring the other slot. But >> that still seems to be easy enough to address, we just need to recheck >> whether the slot still exists (with the right name) the second time we >> acquire the spinlock? > > Yeah, I think that would work. The attached patch takes this > direction. Please review it. + if (XLogRecPtrIsInvalid(copy_restart_lsn) || + copy_restart_lsn < src_restart_lsn || + src_islogical != copy_islogical || + strcmp(copy_name, NameStr(*src_name)) != 0) + ereport(ERROR, + (errmsg("could not copy logical replication slot \"%s\"", + NameStr(*src_name)), + errdetail("The source replication slot has been dropped during copy"))); + + /* Install copied values again */ + SpinLockAcquire(&MyReplicationSlot->mutex); Worth worrying about this window not reduced to zero? If the slot is dropped between both then the same issue would arise. -- Michael
Вложения
В списке pgsql-hackers по дате отправления: