Skip to content

Commit 4a0e731

Browse files
author
Amit Kapila
committed
Doc: Update the interaction of tablesync with wal_retrieve_retry_interval.
In passing, update the documentation that explains the process of initial data replication to explicitly state that it uses a table synchronization worker. Author: Vignesh C Reviewed-by: Peter Smith, Shlok Kyal, Amit Kapila Discussion: https://postgr.es/m/CALDaNm3RxGcD4cDAV5Q0_A4n06F3+AAMpxiyND9Zn0dB86hFmg@mail.gmail.com
1 parent be31ac2 commit 4a0e731

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

doc/src/sgml/config.sgml

+2-1
Original file line numberDiff line numberDiff line change
@@ -4953,7 +4953,8 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class="
49534953
</para>
49544954
<para>
49554955
In logical replication, this parameter also limits how often a failing
4956-
replication apply worker will be respawned.
4956+
replication apply worker or table synchronization worker will be
4957+
respawned.
49574958
</para>
49584959
</listitem>
49594960
</varlistentry>

doc/src/sgml/logical-replication.sgml

+23-12
Original file line numberDiff line numberDiff line change
@@ -2017,18 +2017,20 @@ CONTEXT: processing remote data for replication origin "pg_16395" during "INSER
20172017
<title>Initial Snapshot</title>
20182018
<para>
20192019
The initial data in existing subscribed tables are snapshotted and
2020-
copied in a parallel instance of a special kind of apply process.
2021-
This process will create its own replication slot and copy the existing
2022-
data. As soon as the copy is finished the table contents will become
2023-
visible to other backends. Once existing data is copied, the worker
2024-
enters synchronization mode, which ensures that the table is brought
2025-
up to a synchronized state with the main apply process by streaming
2026-
any changes that happened during the initial data copy using standard
2027-
logical replication. During this synchronization phase, the changes
2028-
are applied and committed in the same order as they happened on the
2029-
publisher. Once synchronization is done, control of the
2030-
replication of the table is given back to the main apply process where
2031-
replication continues as normal.
2020+
copied in a parallel instances of a special kind of apply process.
2021+
These special apply processes are dedicated table synchronization
2022+
workers, spawned for each table to be synchronized. Each table
2023+
synchronization process will create its own replication slot and
2024+
copy the existing data. As soon as the copy is finished the table
2025+
contents will become visible to other backends. Once existing data
2026+
is copied, the worker enters synchronization mode, which ensures
2027+
that the table is brought up to a synchronized state with the main
2028+
apply process by streaming any changes that happened during the
2029+
initial data copy using standard logical replication. During this
2030+
synchronization phase, the changes are applied and committed in the same
2031+
order as they happened on the publisher. Once synchronization is done,
2032+
control of the replication of the table is given back to the main apply
2033+
process where replication continues as normal.
20322034
</para>
20332035
<note>
20342036
<para>
@@ -2039,6 +2041,15 @@ CONTEXT: processing remote data for replication origin "pg_16395" during "INSER
20392041
when copying the existing table data.
20402042
</para>
20412043
</note>
2044+
<note>
2045+
<para>
2046+
If a table synchronization worker fails during copy, the apply worker
2047+
detects the failure and respawns the table synchronization worker to
2048+
continue the synchronization process. This behaviour ensures that
2049+
transient errors do not permanently disrupt the replication setup. See
2050+
also <link linkend="guc-wal-retrieve-retry-interval"><varname>wal_retrieve_retry_interval</varname></link>.
2051+
</para>
2052+
</note>
20422053
</sect2>
20432054
</sect1>
20442055

0 commit comments

Comments
 (0)