1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-27 00:12:01 +03:00

Track logrep apply workers' last start times to avoid useless waits.

Enforce wal_retrieve_retry_interval on a per-subscription basis,
rather than globally, and arrange to skip that delay in case of
an intentional worker exit.  This probably makes little difference
in the field, where apply workers wouldn't be restarted often;
but it has a significant impact on the runtime of our logical
replication regression tests (even though those tests use
artificially-small wal_retrieve_retry_interval settings already).

Nathan Bossart, with mostly-cosmetic editorialization by me

Discussion: https://postgr.es/m/20221122004119.GA132961@nathanxps13
This commit is contained in:
Tom Lane
2023-01-22 14:08:46 -05:00
parent c9f7f92648
commit 5a3a95385b
9 changed files with 243 additions and 49 deletions

View File

@@ -4877,6 +4877,10 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class="
environments where the number of times an infrastructure is accessed
is taken into account.
</para>
<para>
In logical replication, this parameter also limits how often a failing
replication apply worker will be respawned.
</para>
</listitem>
</varlistentry>

View File

@@ -2008,6 +2008,16 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry>Waiting to read or update information
about <quote>heavyweight</quote> locks.</entry>
</row>
<row>
<entry><literal>LogicalRepLauncherDSA</literal></entry>
<entry>Waiting to access logical replication launcher's dynamic shared
memory allocator.</entry>
</row>
<row>
<entry><literal>LogicalRepLauncherHash</literal></entry>
<entry>Waiting to access logical replication launcher's shared
hash table.</entry>
</row>
<row>
<entry><literal>LogicalRepWorker</literal></entry>
<entry>Waiting to read or update the state of logical replication