From: | Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> |
---|---|
To: | Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com> |
Cc: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(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-05 22:27:28 |
Message-ID: | CAD21AoAiNQF7EYT9_UqTq+UZZmhgYLioc-_V6TfMA_criDHpWg@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Sep 2, 2025 at 5:12 AM Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com> wrote:
>
>
> I tested the behaviour with HEAD and with Patch. And I confirmed the
> change in behaviour between HEAD and Patch
>
> Suppose we have a primary and a standby with wal_level = logical and
> guc parameters to enable slot sync worker are set accordingly. A slot
> sync worker will be running.
> Now we change the value of wal_level for primary to replica. And
> restart the primary server
>
> With HEAD, during restart the existing sync_slot_worker will exit with:
> 2025-09-02 11:49:08.846 IST [3877882] ERROR: synchronization worker
> "" could not connect to the primary server: connection to server at
> "localhost" (127.0.0.1), port 5432 failed: Connection refused
> Is the server running on that host and accepting TCP/IP connections?
> 2025-09-02 11:49:11.380 IST [3877885] FATAL: streaming replication
> receiver "walreceiver" could not connect to the primary server:
> connection to server at "localhost" (127.0.0.1), port 5432 failed:
> Connection refused
> Is the server running on that host and accepting TCP/IP connections?
>
> and after the restart of the primary server, slot sync worker will
> restart and it is able to connect to the primary.
>
> With Patch, during restart the existing sync_slot_worker will exit.
> But after the restart of the primary server, slot sync worker cannot
> start and we can see following log:
> 2025-09-02 12:44:51.497 IST [3947520] LOG: replication slot
> synchronization worker is shutting down on receiving SIGINT
> 2025-09-02 12:44:51.498 IST [3943504] LOG: replication slot
> synchronization requires logical decoding to be enabled
> 2025-09-02 12:44:51.498 IST [3943504] HINT: To enable logical
> decoding on primary, set "wal_level" >= "logical" or create at least
> one logical slot when "wal_level" = "replica".
> 2025-09-02 12:45:51.537 IST [3943504] LOG: replication slot
> synchronization requires logical decoding to be enabled
> 2025-09-02 12:45:51.537 IST [3943504] HINT: To enable logical
> decoding on primary, set "wal_level" >= "logical" or create at least
> one logical slot when "wal_level" = "replica".
>
> So, with HEAD, after we restart the primary server with 'wal_level =
> replica', the slot sync worker can restart and connect to the primary
> but with patch it cannot start after restart due to the check in
> ValidateSlotSyncParams.
But the slotsync worker is launched again once logical decoding is
enabled, no? I'm not sure that we want to launch the slotsync worker
also when we know logical decoding is not enabled.
Regards,
--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com
From | Date | Subject | |
---|---|---|---|
Next Message | Tatsuo Ishii | 2025-09-05 22:58:52 | Re: Raw parse tree is not dumped to log |
Previous Message | Melanie Plageman | 2025-09-05 22:27:05 | Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) |