Re: Synchronizing slots from primary to standby
| От | Drouvot, Bertrand |
|---|---|
| Тема | Re: Synchronizing slots from primary to standby |
| Дата | |
| Msg-id | d54b25c1-7478-48f5-b8be-97a33549bfff@gmail.com обсуждение исходный текст |
| Ответ на | Re: Synchronizing slots from primary to standby (Amit Kapila <amit.kapila16@gmail.com>) |
| Ответы |
Re: Synchronizing slots from primary to standby
|
| Список | pgsql-hackers |
Hi, On 11/21/23 6:16 AM, Amit Kapila wrote: > On Mon, Nov 20, 2023 at 6:51 PM Drouvot, Bertrand > <bertranddrouvot.pg@gmail.com> wrote: >> As far the 'i' state here, from what I see, it is currently useful for: >> >> 1. Cascading standby to not sync slots with state = 'i' from >> the first standby. >> 2. Easily report Slots that did not catch up on the primary yet. >> 3. Avoid inactive slots to block "active" ones creation. >> >> So not creating those slots should not be an issue for 1. (sync are >> not needed on cascading standby as not created on the first standby yet) >> but is an issue for 2. (unless we provide another way to keep track and report >> such slots) and 3. (as I think we should still need to reserve WAL). >> >> I've a question: we'd still need to reserve WAL for those slots, no? >> >> If that's the case and if we don't call ReplicationSlotCreate() then ReplicationSlotReserveWal() >> would not work as MyReplicationSlot would be NULL. >> > > Yes, we need to reserve WAL to see if we can sync the slot. We are > currently creating an RS_EPHEMERAL slot and if we don't explicitly > persist it when we can't sync, then it will be dropped when we do > ReplicationSlotRelease() at the end of synchronize_one_slot(). So, the > loss is probably, the next time we again try to sync the slot, we need > to again create it and may need to wait for newer restart_lsn on > standby Yeah, and doing so we'd reduce the time window to give the slot a chance to catch up (as opposed to create it a single time and maintain an 'i' state). > which could be avoided if we have the slot in 'i' state from > the previous run. Right. > I don't deny the importance of having 'i' > (initialized) state but was just trying to say that it has additional > code complexity. Right, and I think it's worth it. > OTOH, having it may give better visibility to even > users about slots that are not active (say manually created slots on > the primary). Agree. All that being said, on my side I'm +1 on keeping the 'i' state behavior as it is implemented currently (would be happy to hear others' opinions too). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
В списке pgsql-hackers по дате отправления: