Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
От | Masahiko Sawada |
---|---|
Тема | Re: POC: enable logical decoding when wal_level = 'replica' without a server restart |
Дата | |
Msg-id | CAD21AoCu7mrPB=e54v1_XE0z=45=1rhBtgJJ95sU7sBKGJ01jQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: POC: enable logical decoding when wal_level = 'replica' without a server restart (Masahiko Sawada <sawada.mshk@gmail.com>) |
Список | pgsql-hackers |
On Thu, Sep 11, 2025 at 10:46 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > On Wed, Sep 10, 2025 at 11:32 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > On Sat, Sep 6, 2025 at 3:46 AM Masahiko Sawada <sawada.mshk@gmail.com> 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
В списке pgsql-hackers по дате отправления: