On Sat, Oct 25, 2025 at 4:06 AM Masahiko Sawada <[email protected]> wrote: > > On Fri, Oct 24, 2025 at 4:48 AM Amit Kapila <[email protected]> wrote: > > > > 5. > > +bool > > +CheckLogicalSlotExists(void) > > { > > … > > + /* NB: counting invalidated slots */ > > + > > + if (SlotIsLogical(s)) > > > > Why can't we avoid counting invalid slots? I think this needs more > > comments. BTW, shouldn't this patch consider changing > > effective_wal_level when the last logical slot is invalidated? > > Ideally, when logical decoding is not possible in the system, then we > > can reduce the wal_level back to replica, no? > > Hmm, good point. I've considered this idea before but I didn't > implement it probably because it makes the code more complex. But > thinking of this idare carefully, it doesn't seem too complex. I've > implemented this part as a separate patch to make reviews easy. I'll > merge them if it looks good. >
Thanks for looking into it. I didn't get a chance to review the entire 0002 but I looked at InvalidateObsoleteReplicationSlots() and have a few questions related to that. In InvalidateObsoleteReplicationSlots(), the patch increments n_valid_logicalslots before trying to invalidate the slot. Say, if there is just one logical slot which got invalidated, then because we have first incremented n_valid_logicalslots, how will it request to disable logical_decoding after invalidating the last logical slot? Another related point is that, say we decide to disable decoding because the last logical slot got invalidated and RequestDisableLogicalDecoding()->LogicalDecodingStatusChangeAllowed() returns false, then how the disabling will happen? -- With Regards, Amit Kapila.
