On Mon, Oct 27, 2025 at 8:38 PM shveta malik <shveta.malik@gmail.com> wrote:
>
> On Mon, Oct 27, 2025 at 6:12 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
> >
>
> > 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?
> >
>
> If LogicalDecodingStatusChangeAllowed() returns false, we do not
> disable logical decoding because that essentially means
> recovery-in-progress and if that is the case, we do not allow
> status-change. LogicalDecodingStatusChangeAllowed() returns false
> always on standby until it is promoted and recovery ends.
>
But the request will be lost and we won't be able to disable decoding
after promotion. Won't it be better if RequestDisableLogicalDecoding()
always set pending_disable as true and later
checkpointer->DisableLogicalDecodingIfNecessary() anyway takes care of
it by calling LogicalDecodingStatusChangeAllowed()? That way the
request to disable decoding won't be lost.
--
With Regards,
Amit Kapila.