RE: Logical replication timeout problem
Wei Wang (Fujitsu) <wangw.fnst@fujitsu.com>
From: "wangw.fnst@fujitsu.com" <wangw.fnst@fujitsu.com>
To: "kuroda.hayato@fujitsu.com" <kuroda.hayato@fujitsu.com>, Peter Smith <smithpb2250@gmail.com>
Cc: Fabrice Chapuis <fabrice636861@gmail.com>, Simon Riggs <simon.riggs@enterprisedb.com>, Petr Jelinek <petr.jelinek@enterprisedb.com>, "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Ajin Cherian <itsajin@gmail.com>
Date: 2022-03-08T01:25:13Z
Lists: pgsql-hackers
Attachments
- v1-0001-Fix-the-timeout-of-subscriber-in-long-transaction.patch (application/octet-stream) patch v1-0001
On Fri, Mar 4, 2022 at 4:26 PM Kuroda, Hayato/黒田 隼人 <kuroda.hayato@fujitsu.com> wrote: > Thanks for your test and comments. > Some codes were added in ReorderBufferProcessTXN() for treating DDL, > but I doubted updating accept_writes is needed. > IMU, the parameter is read by OutputPluginPrepareWrite() in order align > messages. > They should have a header - like 'w' - before their body. But here only a > keepalive message is sent, > no meaningful changes, so I think it might be not needed. > I commented out the line and tested like you did [1], and no timeout and errors > were found. > Do you have any reasons for that? > > https://www.postgresql.org/message- > id/OS3PR01MB6275A95FD44DC6C46058EA389E3B9%40OS3PR01MB6275.jpnprd0 > 1.prod.outlook.com Yes, you are right. We should not set accept_writes to true here. And I looked into the function WalSndUpdateProgress. I found function WalSndUpdateProgress try to record the time of some message(by function LagTrackerWrite) sent to subscriber, such as in function pgoutput_commit_txn. Then, when publisher receives the reply message from the subscriber(function ProcessStandbyReplyMessage), publisher invokes LagTrackerRead to calculate the delay time(refer to view pg_stat_replication). Referring to the purpose of LagTrackerWrite, I think it is no need to log time when sending keepalive messages here. So when the parameter send_keep_alive of function WalSndUpdateProgress is true, skip the recording time. > I'm also happy if you give the version number :-). Introduce version information, starting from version 1. Attach the new patch. 1. Fix wrong variable setting and skip unnecessary time records.[suggestion by Kuroda-San and me.] 2. Introduce version information.[suggestion by Peter, Kuroda-San] Regards, Wang wei
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