Re: Logical replication 'invalid memory alloc request size 1585837200' after upgrading to 17.5
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>,
Duncan Sands <duncan.sands@deepbluecap.com>, "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2025-05-28T18:51:39Z
Lists: pgsql-bugs
On Mon, May 26, 2025 at 4:19 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Mon, May 26, 2025 at 2:52 PM Hayato Kuroda (Fujitsu) > <kuroda.hayato@fujitsu.com> wrote: > > > > > If the above hypothesis is true, we need to consider another idea so > > > that we can execute invalidation messages in both cases. > > > > The straightforward fix is to check the change queue as well when the transaction > > has invalidation messages. 0003 implemented that. One downside is that traversing > > changes can affect performance. Currently we iterates all of changes even a > > single REORDER_BUFFER_CHANGE_INVALIDATION. I cannot find better solutions for now. > > > > It can impact the performance for large transactions with fewer > invalidations, especially the ones which has spilled changes because > it needs to traverse the entire list of changes again at the end. What if we remember all executed REORDER_BUFFER_CHANGE_INVALIDATION in a queue while replaying the transaction so that we can execute them at the end in a non-error path, instead of re-traversing the entire list of changes to execute the inval messages? As for concurrent abort paths, probably we can consider re-traversing the entire list, unconditionally invalidating all caches (using InvalidateSystemCaches()), or somehow traversing the list of changes only when there might be any REORDER_BUFFER_CHANGE_INVALIDATION in the rest of changes? Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix cache-dependent test failures in logical decoding.
- 87819f766f37 13.22 landed
-
Fix re-distributing previously distributed invalidation messages during logical decoding.
- d87d07b7ad3b 18.0 landed
- 45c357e0e85d 17.6 landed
- b2ae077205e1 16.10 landed
- fc0fb77c550f 15.14 landed
- 983b3636259b 14.19 landed
- 1230be12f086 13.22 landed
-
Fix data loss in logical replication.
- 247ee94150b6 13.21 cited
- 4909b38af034 18.0 cited