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 <and...@anarazel.de> 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 <and...@anarazel.de> 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 <br...@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.