Re: Physical replication slot advance is not persistent
От | Amit Kapila |
---|---|
Тема | Re: Physical replication slot advance is not persistent |
Дата | |
Msg-id | CAA4eK1Ltr8EwRQqzzNu8qogLN0HcMdx90drHcC1mncyRWA4-qA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Physical replication slot advance is not persistent (Alexey Kondratov <a.kondratov@postgrespro.ru>) |
Ответы |
Re: Physical replication slot advance is not persistent
|
Список | pgsql-hackers |
On Fri, Jun 19, 2020 at 12:16 AM Alexey Kondratov <a.kondratov@postgrespro.ru> wrote: > > On 2020-06-16 10:27, Michael Paquier wrote: > > On Wed, Jun 10, 2020 at 08:57:17PM +0300, Alexey Kondratov wrote: > >> New test reproduces this issue well. Left it running for a couple of > >> hours > >> in repeat and it seems to be stable. > > > > Thanks for testing. I have been thinking about the minimum xmin and > > LSN computations on advancing, and actually I have switched the > > recomputing to be called at the end of pg_replication_slot_advance(). > > This may be a waste if no advancing is done, but it could also be an > > advantage to enforce a recalculation of the thresholds for each > > function call. And that's more consistent with the slot copy, drop > > and creation. > > > > Sorry for a bit late response, but I see a couple of issues with this > modified version of the patch in addition to the waste call if no > advancing is done, mentioned by you: > > 1. Both ReplicationSlotsComputeRequiredXmin() and > ReplicationSlotsComputeRequiredLSN() may have already been done in the > LogicalConfirmReceivedLocation() if it was a logical slot. > I think it is not done in all cases, see the else part in LogicalConfirmReceivedLocation. LogicalConfirmReceivedLocation { .. else { SpinLockAcquire(&MyReplicationSlot->mutex); MyReplicationSlot->data.confirmed_flush = lsn; SpinLockRelease(&MyReplicationSlot->mutex); } .. } > > However, just noted that LogicalConfirmReceivedLocation() only does > ReplicationSlotsComputeRequiredLSN() if updated_xmin flag was set, which > looks wrong from my perspective, since updated_xmin and updated_restart > flags are set separately. > I see your point but it is better to back such a change by some test case. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: