Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: shveta malik <shveta.malik@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>,
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Shlok Kyal <shlok.kyal.oss@gmail.com>,
Bertrand Drouvot <bertranddrouvot.pg@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2025-10-15T16:20:03Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix regression test failure when wal_level is set to minimal.
- 0de5f0d869d1 19 (unreleased) landed
-
Toggle logical decoding dynamically based on logical slot presence.
- 67c20979ce72 19 (unreleased) landed
-
Disallow server start with sync_replication_slots = on and wal_level < logical.
- 12da45742cfd 19 (unreleased) cited
On Wed, Oct 15, 2025 at 3:56 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Tue, Oct 14, 2025 at 11:40 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > > > On Tue, Oct 14, 2025 at 2:24 AM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > Thanks. I was testing slot-sync worker flow and noticed that even if > > > 'sync_replication_slots' is enabled, it takes quite some time (1-2 > > > mins) for slot sync worker to start. On noticing > > > XLOG_LOGICAL_DECODING_STATUS_CHANGE, isn't there a way to (or > > > shouldn't we) wakeup postmaster to start slotsync worker immediately? > > > > > > Logs for timestamps reference: > > > > > > 2025-10-14 14:41:32.852 IST [208475] LOG: replication slot > > > synchronization requires "effective_wal_level" >= "logical" on the > > > primary > > > 2025-10-14 14:41:32.852 IST [208475] HINT: To enable logical decoding > > > on primary, set "wal_level" >= "logical" or create at least one > > > logical slot when "wal_level" = "replica". > > > 2025-10-14 14:41:35.499 IST [208481] LOG: update logical decoding status to 1 > > > 2025-10-14 14:41:35.499 IST [208481] CONTEXT: WAL redo at 0/03000060 > > > for XLOG/LOGICAL_DECODING_STATUS_CHANGE: true > > > 2025-10-14 14:42:53.611 IST [208529] LOG: slot sync worker started > > > ------ > > > > I think that this particular situation happened because the postmaster > > was sleeping and didn't have any tasks. If a new connection comes in > > or the existing connection exits, the postmaster launches the slotsync > > worker. I believe it would not be a serious issue in practice. > > > > Right, but OTOH, do we see any harm if we wake up the postmaster on > such an event? It shouldn't happen frequently to matter either way > though. It's not harmful in practice. I've considered waking up the postmaster with a new PMSignalReason, but I thought it's overkill to introduce a new reason just to wake up the postmaster. If there is a convenient way, I'd like to use that. > > > > There was a lot of discussion regarding slotsync worker in the past, > > > please let me know if it is concluded and I missed it somehow. > > > > Since we've discussed that it's out of scope of this patch that we > > shutdown dynamically upon logical decoding status changes, even if > > logical decoding status gets disabled on the standby, the slotsync > > worker keeps working. If it gets enabled again, we don't need to wake > > up the postmaster as the slotsync worker would already be running. I > > think we can introduce more dynamic control over the slotsync worker > > in a separate patch if we need. > > > > I think it is better to stop the slotsync worker at this event because > without a patch we won't even allow the server to restart if the > wal_level on standby is less than logical. But, I agree it could be > done as a separate patch as well. Agreed. I'll implement it in a follow-up patch. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com