On Thu, Sep 11, 2025 at 10:46 AM Masahiko Sawada <[email protected]> wrote: > > On Wed, Sep 10, 2025 at 11:32 PM Amit Kapila <[email protected]> wrote: > > > > On Sat, Sep 6, 2025 at 3:46 AM Masahiko Sawada <[email protected]> > > wrote: > > > > > > I've attached the updated patch that incorporated all comments I got so > > > far. > > > > > > > * > > + /* > > + * While all processes are using the new status, there could be some > > + * transactions that might have started with the old status. So wait > > + * for the running transactions to complete so that logical decoding > > + * doesn't include transactions that wrote WAL with insufficient > > + * information. > > + */ > > + running = GetRunningTransactionData(); > > + LWLockRelease(ProcArrayLock); > > + LWLockRelease(XidGenLock); > > + > > + elog(DEBUG1, "waiting for %d transactions to complete", running->xcnt); > > + > > + for (int i = 0; i < running->xcnt; i++) > > + { > > + TransactionId xid = running->xids[i]; > > + > > + if (TransactionIdIsCurrentTransactionId(xid)) > > + continue; > > + > > + XactLockTableWait(xid, NULL, NULL, XLTW_None); > > + } > > > > When building a snapshot during the start of logical decoding, we > > anyway wait for running transactions to finish via the snapbuild > > machinery. So, why do we need it here? And if it is needed, can we > > update the comments to explain why it is required in spite of > > snapbuild machinery doing similar thing? > > Fair point. I don't see any reason we need to wait here. Will remove this > step. > > > * Is it a good idea to enable/disable decoding for temporary logical > > slots? The temporary slots are released during ERROR or at session > > end, is that a good time to do the disable processing that even > > requires WAL writing. > > I think the same is true for slots with RS_EPEMERAL state.
Just to be clear, I meant a case like where one logical slot is already present and the slot is removed between when another newly created logical slot is created with RS_EPHEMERAL state and removed due to an error. In this case, the ephemeral slot is the last logical replication slot to drop. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
