Re: POC: enable logical decoding when wal_level = 'replica' without a server restart

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com>, Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>, shveta malik <shveta(dot)malik(at)gmail(dot)com>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
Date: 2025-09-11 06:32:12
Message-ID: CAA4eK1JQL5oQOwD=YTbSnKAq1reLLPkHkDf3qm-y9ZhTVC2J=Q@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Sep 6, 2025 at 3:46 AM Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)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?

* 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.

--
With Regards,
Amit Kapila.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Masahiko Sawada 2025-09-11 06:48:24 Re: [PATCH] Add tests for Bitmapset
Previous Message Rahila Syed 2025-09-11 06:30:20 Re: issue with synchronized_standby_slots