Re: Logical replication timeout problem
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Euler Taveira <euler@eulerto.com>
Cc: "wangw.fnst@fujitsu.com" <wangw.fnst@fujitsu.com>,
Masahiko Sawada <sawada.mshk@gmail.com>, "kuroda.hayato@fujitsu.com" <kuroda.hayato@fujitsu.com>,
Peter Smith <smithpb2250@gmail.com>, 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>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Ajin Cherian <itsajin@gmail.com>
Date: 2022-04-18T03:59:36Z
Lists: pgsql-hackers
On Thu, Apr 14, 2022 at 5:52 PM Euler Taveira <euler@eulerto.com> wrote: > > On Wed, Apr 13, 2022, at 7:45 AM, Amit Kapila wrote: > > Sawada-San, Euler, do you have any opinion on this approach? I > personally still prefer the approach implemented in v10 [1] especially > due to the latest finding by Wang-San that we can't update the > lag-tracker apart from when it is invoked at the transaction end. > However, I am fine if we like this approach more. > > It seems v15 is simpler and less error prone than v10. v10 has a mix of > OutputPluginUpdateProgress() and the new function update_progress(). The v10 > also calls update_progress() for every change action in pgoutput_change(). It > is not a good approach for maintainability -- new changes like sequences need > extra calls. > Okay, let's use the v15 approach as Sawada-San also seems to have a preference for that. > However, as you mentioned there should handle the track lag case. > > Both patches change the OutputPluginUpdateProgress() so it cannot be > backpatched. Are you planning to backpatch it? If so, the boolean variable > (last_write or end_xacts depending of which version you are considering) could > be added to LogicalDecodingContext. > If we add it to LogicalDecodingContext then I think we have to always reset the variable after its use which will make it look ugly and error-prone. I was not thinking to backpatch it because of the API change but I guess if we want to backpatch then we can add it to LogicalDecodingContext for back-branches. I am not sure if that will look committable but surely we can try. > (You should probably consider this approach > for skipped_xact too) > As mentioned, I think it will be more error-prone and we already have other xact related parameters in that and similar APIs. So, I am not sure why you want to prefer that? > > Does this same issue occur for long transactions? I mean keep a long > transaction open and execute thousands of transactions. > No, this problem won't happen for such cases because we will only try to send it at the commit time. Note that this problem happens only when we don't send anything to the subscriber till a timeout happens. -- With Regards, Amit Kapila.
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