On Sat, May 20, 2023 at 10:37:58AM +0200, Drouvot, Bertrand wrote:
> It's the snapshot of running transactions (aka the xl_running_xacts WAL
> record) that is used during the
> logical slot creation to determine if the logical decoding find a consistent
> state to start with.
>
> On a primary this WAL record is being emitted during the logical slot
> creation, but on a standby
> we can't write WAL records (so we are waiting for the primary to emit it).
>
> Outside of logical slot creation, this WAL record is also emitted during
> checkpoint or periodically
> by the bgwriter.
>
> What about?
>
> This adds the function pg_log_standby_snapshot() to emit the WAL record that
> contains the list
> of running transactions.
>
> If the primary is idle, the logical slot creation on a standby can take a
> while (waiting for this WAL record
> to be replayed to determine if the logical decoding find a consistent state
> to start with).
>
> In that case, this new function can be used on the primary to speed up the
> logical slot
> creation on the standby.
Okay, this helps. I split the entry into two with this text:
<!--
Author: Andres Freund <[email protected]>
2023-04-08 [0fdab27ad] Allow logical decoding on standbys
-->
<listitem>
<para>
Allow logical decoding on standbys (Bertrand Drouvot, Andres Freund,
Amit Khandekar)
</para>
</listitem>
<!--
Author: Andres Freund <[email protected]>
2023-04-08 [0fdab27ad] Allow logical decoding on standbys
-->
<listitem>
<para>
Add function pg_log_standby_snapshot() to force creation of a WAL
snapshot (Bertrand Drouvot)
</para>
<para>
WAL snapshots are required for logical slot creation so this function
speeds their creation on standbys.
</para>
</listitem>
--
Bruce Momjian <[email protected]> https://momjian.us
EDB https://enterprisedb.com
Only you can decide what is important to you.