RE: Introduce XID age and inactive timeout based replication slot invalidation
От | Zhijie Hou (Fujitsu) |
---|---|
Тема | RE: Introduce XID age and inactive timeout based replication slot invalidation |
Дата | |
Msg-id | OS0PR01MB571645191EDCC9642F037C8194F22@OS0PR01MB5716.jpnprd01.prod.outlook.com обсуждение исходный текст |
Ответ на | Re: Introduce XID age and inactive timeout based replication slot invalidation (Amit Kapila <amit.kapila16@gmail.com>) |
Список | pgsql-hackers |
On Monday, February 10, 2025 2:10 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Sat, Feb 8, 2025 at 12:28 PM Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> > wrote: > > > > 3. > > > > + if (cause & RS_INVAL_HORIZON) > > + { > > + if (!SlotIsLogical(s)) > > + goto invalidation_marked; > > > > I am not sure if this logic is correct. Even if the slot would not be > > invalidated due to RS_INVAL_HORIZON, we should continue to check other > causes. > > > > Isn't this comment apply to even the next condition (if (dboid != InvalidOid && > dboid != s->data.database))? We need to probably continue to check other > invalidation causes unless one is set. Yes, both places need to be fixed. > > > Besides, instead of using a goto, I personally prefer to move all > > these codes into a separate function which would return a single invalidation > cause. > > > > Instead of using goto label (invalidation_marked:), won't it be better if we use a > boolean invalidation_marked and convert all if's to if .. > else if .. else cases? Yes, I think that would be better. > > > 4. > > - if (InvalidateObsoleteReplicationSlots(RS_INVAL_WAL_REMOVED, > > + if (InvalidateObsoleteReplicationSlots(RS_INVAL_WAL_REMOVED > | > > + RS_INVAL_IDLE_TIMEOUT, > > > _logSegNo, InvalidOid, > > > > InvalidTransactionId)) > > > > I think this change could trigger an unnecessary WAL position > > re-calculation when slots are invalidated only due to > RS_INVAL_IDLE_TIMEOUT. > > > > Why is that unnecessary? If some slots got invalidated due to timeout, we don't > want to retain the WAL corresponding to them. Sorry, I mistakenly thought that the slot only protected dead tuples. Please disregard this comment. Best Regards, Hou zj
В списке pgsql-hackers по дате отправления: