]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix the logical replication timeout during large transactions.
authorAmit Kapila <akapila@postgresql.org>
Wed, 11 May 2022 05:11:24 +0000 (10:41 +0530)
committerAmit Kapila <akapila@postgresql.org>
Wed, 11 May 2022 05:11:24 +0000 (10:41 +0530)
commit55558df2374167af38534df988ec3b9d0b0019f0
treebc24f74a12194ff6b3467152e9911d83c468c77e
parentb9d70ef34b833fd63e3ff9f049dbbcdfda9dc9fe
Fix the logical replication timeout during large transactions.

The problem is that we don't send keep-alive messages for a long time
while processing large transactions during logical replication where we
don't send any data of such transactions. This can happen when the table
modified in the transaction is not published or because all the changes
got filtered. We do try to send the keep_alive if necessary at the end of
the transaction (via WalSndWriteData()) but by that time the
subscriber-side can timeout and exit.

To fix this we try to send the keepalive message if required after
processing certain threshold of changes.

Reported-by: Fabrice Chapuis
Author: Wang wei and Amit Kapila
Reviewed By: Masahiko Sawada, Euler Taveira, Hou Zhijie, Hayato Kuroda
Backpatch-through: 10
Discussion: https://postgr.es/m/CAA5-nLARN7-3SLU_QUxfy510pmrYK6JJb=bk3hcgemAM_pAv+w@mail.gmail.com
src/backend/replication/logical/logical.c
src/backend/replication/pgoutput/pgoutput.c
src/backend/replication/walsender.c
src/include/replication/logical.h