Thread
Commits
-
Doc: Update the interaction of tablesync with wal_retrieve_retry_interval.
- 4a0e7314f11e 18.0 landed
-
Documentation update of wal_retrieve_retry_interval to mention table sync worker
vignesh C <vignesh21@gmail.com> — 2024-12-25T14:37:26Z
Hi, Currently, we restart the table synchronization worker after the duration specified by wal_retrieve_retry_interval following the last failure. While this behavior is documented for apply workers, it is not mentioned for table synchronization workers. I believe this detail should be included in the documentation for table synchronization workers as well. Attached is a patch to address this omission. Regards, Vignesh
-
Re: Documentation update of wal_retrieve_retry_interval to mention table sync worker
Peter Smith <smithpb2250@gmail.com> — 2024-12-30T21:17:51Z
On Thu, Dec 26, 2024 at 1:37 AM vignesh C <vignesh21@gmail.com> wrote: > > Hi, > > Currently, we restart the table synchronization worker after the > duration specified by wal_retrieve_retry_interval following the last > failure. While this behavior is documented for apply workers, it is > not mentioned for table synchronization workers. I believe this detail > should be included in the documentation for table synchronization > workers as well. Attached is a patch to address this omission. > > Regards, > Vignesh Hi Vignesh, Here are some review comments for your v1 patch. +1 to enhance the documentation. ====== 1. <para> In logical replication, this parameter also limits how often a failing - replication apply worker will be respawned. + replication apply worker, and table synchronization worker will be + respawned. </para> /, and/or/ SUGGESTION In logical replication, this parameter also limits how often a failing replication apply worker or table synchronization worker will be respawned. ====== 2. I think the reader might never be aware of any of this (throttled relaunch) behaviour unless they accidentally stumble across the docs for this GUC, so IMO this information should be mentioned elsewhere -- wherever the tablesync worker errors are documented. But, TBH, I can't find anywhere in the PostgreSQL docs where it even mentions re-launching failed tablesync workers! Anyway, I think it might be good to include such information in some suitable place (maybe in the CREATE SUBSCRIPTION notes? or maybe in Chapter 29?) to say something like... SUGGESTION: In practice, if a table synchronization worker fails during logical replication, the apply worker detects the failure and attempts to respawn the table synchronization worker to continue the synchronization process. This behaviour ensures that transient errors do not permanently disrupt the replication setup. See also wal_retrieve_retry_interval. ====== Kind Regards, Peter Smith. Fujitsu Australia -
Re: Documentation update of wal_retrieve_retry_interval to mention table sync worker
vignesh C <vignesh21@gmail.com> — 2025-01-05T12:38:48Z
On Tue, 31 Dec 2024 at 02:48, Peter Smith <smithpb2250@gmail.com> wrote: > > On Thu, Dec 26, 2024 at 1:37 AM vignesh C <vignesh21@gmail.com> wrote: > > > > Hi, > > > > Currently, we restart the table synchronization worker after the > > duration specified by wal_retrieve_retry_interval following the last > > failure. While this behavior is documented for apply workers, it is > > not mentioned for table synchronization workers. I believe this detail > > should be included in the documentation for table synchronization > > workers as well. Attached is a patch to address this omission. > > > > Regards, > > Vignesh > > Hi Vignesh, > > Here are some review comments for your v1 patch. > > +1 to enhance the documentation. > > ====== > > 1. > <para> > In logical replication, this parameter also limits how often a failing > - replication apply worker will be respawned. > + replication apply worker, and table synchronization worker will be > + respawned. > </para> > > /, and/or/ > > > SUGGESTION > In logical replication, this parameter also limits how often a failing > replication apply worker or table synchronization worker will be > respawned. Modified > ====== > > 2. > I think the reader might never be aware of any of this (throttled > relaunch) behaviour unless they accidentally stumble across the docs > for this GUC, so IMO this information should be mentioned elsewhere -- > wherever the tablesync worker errors are documented. But, TBH, I can't > find anywhere in the PostgreSQL docs where it even mentions > re-launching failed tablesync workers! > > Anyway, I think it might be good to include such information in some > suitable place (maybe in the CREATE SUBSCRIPTION notes? or maybe in > Chapter 29?) to say something like... > > SUGGESTION: > In practice, if a table synchronization worker fails during logical > replication, the apply worker detects the failure and attempts to > respawn the table synchronization worker to continue the > synchronization process. This behaviour ensures that transient errors > do not permanently disrupt the replication setup. See also > wal_retrieve_retry_interval. Yes, adding it to logical replication Initial Snapshot seemed more appropriate to me. The attached v2 version patch has the changes for the same. Regards, Vignesh
-
Re: Documentation update of wal_retrieve_retry_interval to mention table sync worker
Peter Smith <smithpb2250@gmail.com> — 2025-01-06T03:17:14Z
Hi Vignesh, Some review comments for your v2 patch. ====== doc/src/sgml/logical-replication.sgml 1. <para> The initial data in existing subscribed tables are snapshotted and - copied in a parallel instance of a special kind of apply process. - This process will create its own replication slot and copy the existing - data. As soon as the copy is finished the table contents will become - visible to other backends. Once existing data is copied, the worker - enters synchronization mode, which ensures that the table is brought - up to a synchronized state with the main apply process by streaming - any changes that happened during the initial data copy using standard - logical replication. During this synchronization phase, the changes - are applied and committed in the same order as they happened on the - publisher. Once synchronization is done, control of the - replication of the table is given back to the main apply process where - replication continues as normal. + copied in a parallel instance of a special kind of table synchronization + worker process. This process will create its own replication slot and copy + the existing data. As soon as the copy is finished the table contents will + become visible to other backends. Once existing data is copied, the worker + enters synchronization mode, which ensures that the table is brought up to + a synchronized state with the main apply process by streaming any changes + that happened during the initial data copy using standard logical + replication. During this synchronization phase, the changes are applied + and committed in the same order as they happened on the publisher. Once + synchronization is done, control of the replication of the table is given + back to the main apply process where replication continues as normal. </para> AFAICT the only difference you made is changing: FROM "a special kind of apply process" TO "a special kind of table synchronization worker process". There is only ONE kind of tablesync process, so I think saying "a special kind of table synchronization worker process" seems misleading. I also thought maybe it is better to mention that this is PER table. SUGGESTION: ... a special table synchronization worker process per table. (e.g. please see attached diff) ====== Kind Regards, Peter Smith. Fujitsu Australia -
Re: Documentation update of wal_retrieve_retry_interval to mention table sync worker
vignesh C <vignesh21@gmail.com> — 2025-01-13T07:03:38Z
On Mon, 6 Jan 2025 at 08:47, Peter Smith <smithpb2250@gmail.com> wrote: > > Hi Vignesh, > > Some review comments for your v2 patch. > > ====== > doc/src/sgml/logical-replication.sgml > > AFAICT the only difference you made is changing: > FROM "a special kind of apply process" > TO "a special kind of table synchronization worker process". > > There is only ONE kind of tablesync process, so I think saying "a > special kind of table synchronization worker process" seems > misleading. I also thought maybe it is better to mention that this is > PER table. > > SUGGESTION: > ... a special table synchronization worker process per table. Thanks, the updated v3 version patch has the changes for the same. Regards, Vignesh
-
Re: Documentation update of wal_retrieve_retry_interval to mention table sync worker
Peter Smith <smithpb2250@gmail.com> — 2025-01-13T07:29:05Z
Patch v3-0001 LGTM ====== Kind Regards, Peter Smith. Fujitsu Australia
-
Re: Documentation update of wal_retrieve_retry_interval to mention table sync worker
Shlok Kyal <shlok.kyal.oss@gmail.com> — 2025-01-13T09:13:34Z
On Mon, 13 Jan 2025 at 12:33, vignesh C <vignesh21@gmail.com> wrote: > > On Mon, 6 Jan 2025 at 08:47, Peter Smith <smithpb2250@gmail.com> wrote: > > > > Hi Vignesh, > > > > Some review comments for your v2 patch. > > > > ====== > > doc/src/sgml/logical-replication.sgml > > > > AFAICT the only difference you made is changing: > > FROM "a special kind of apply process" > > TO "a special kind of table synchronization worker process". > > > > There is only ONE kind of tablesync process, so I think saying "a > > special kind of table synchronization worker process" seems > > misleading. I also thought maybe it is better to mention that this is > > PER table. > > > > SUGGESTION: > > ... a special table synchronization worker process per table. > > Thanks, the updated v3 version patch has the changes for the same. > Hi Vignesh, I reviewed the v3 patch. And it looks good to me. Thanks and Regards, Shlok Kyal