RE: Logical replication timeout problem
Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
From: "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>
To: Amit Kapila <amit.kapila16@gmail.com>, "wangw.fnst@fujitsu.com" <wangw.fnst@fujitsu.com>
Cc: Peter Smith <smithpb2250@gmail.com>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Fabrice Chapuis <fabrice636861@gmail.com>, Euler Taveira <euler@eulerto.com>, Masahiko Sawada <sawada.mshk@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, Simon Riggs <simon.riggs@enterprisedb.com>, Petr Jelinek <petr.jelinek@enterprisedb.com>, "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Ajin Cherian <itsajin@gmail.com>
Date: 2023-01-27T11:48:02Z
Lists: pgsql-hackers
On Wednesday, January 25, 2023 7:26 PM Amit Kapila <amit.kapila16@gmail.com> > > On Tue, Jan 24, 2023 at 8:15 AM wangw.fnst@fujitsu.com > <wangw.fnst@fujitsu.com> wrote: > > > > Attach the new patch. > > > > I think the patch missed to handle the case of non-transactional messages which > was previously getting handled. I have tried to address that in the attached. Is > there a reason that shouldn't be handled? Thanks for updating the patch! I thought about the non-transactional message. I think it seems fine if we don’t handle it for timeout because such message is decoded via: WalSndLoop -XLogSendLogical --LogicalDecodingProcessRecord ---logicalmsg_decode ----ReorderBufferQueueMessage -----rb->message() -- //maybe send the message or do nothing here. After invoking rb->message(), we will directly return to the main loop(WalSndLoop) where we will get a chance to call WalSndKeepaliveIfNecessary() to avoid the timeout. This is a bit different from transactional changes, because for transactional changes, we will buffer them and then send every buffered change one by one(via ReorderBufferProcessTXN) without going back to the WalSndLoop, so we don't get a chance to send keepalive message if necessary, which is more likely to cause the timeout problem. I will also test the non-transactional message for timeout in case I missed something. Best Regards, Hou zj
Commits
-
Fix the logical replication timeout during large DDLs.
- 8c58624df462 16.0 landed
-
Fix the logical replication timeout during large transactions.
- f95d53eded55 15.0 landed
- d6da71fa8f28 14.4 landed
- 55558df23741 13.8 landed
- f832b5007c1c 12.12 landed
- 87c1dd246af8 11.17 landed
- a4015ec0375d 10.22 landed
-
Rethink the delay-checkpoint-end mechanism in the back-branches.
- 10520f434687 14.3 cited
-
Revert "Logical decoding of sequences"
- 2c7ea57e56ca 15.0 cited
-
Skip empty transactions for logical replication.
- d5a9d86d8ffc 15.0 cited
-
Allow specifying column lists for logical replication
- 923def9a533a 15.0 cited
-
Add decoding of sequences to built-in replication
- 75b1521dae1f 15.0 cited
-
Fix ABI break introduced by commit 4daa140a2f.
- 56e366f6757d 13.4 cited
-
Lag tracking for logical replication
- 024711bb5446 10.0 cited