Re: [BUG] Logical replication failure "ERROR: could not map filenode "base/13237/442428" to relation OID" with catalog modifying txns
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, "Drouvot,
Bertrand" <bdrouvot@amazon.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, "Oh,
Mike" <minsoo@amazon.com>
Date: 2022-07-06T08:55:39Z
Lists: pgsql-hackers
On Wed, Jul 6, 2022 at 12:19 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > On Tue, Jul 5, 2022 at 8:00 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > 2. Are we anytime removing transaction ids from catchanges->xip array? > > No. > > > If not, is there a reason for the same? I think we can remove it > > either at commit/abort or even immediately after adding the xid/subxid > > to committed->xip array. > > It might be a good idea but I'm concerned that removing XID from the > array at every commit/abort or after adding it to committed->xip array > might be costly as it requires adjustment of the array to keep its > order. Removing XIDs from the array would make bsearch faster but the > array is updated reasonably often (every 15 sec). > Fair point. However, I am slightly worried that we are unnecessarily searching in this new array even when ReorderBufferTxn has the required information. To avoid that, in function SnapBuildXidHasCatalogChange(), we can first check ReorderBufferXidHasCatalogChanges() and then check the array if the first check doesn't return true. Also, by the way, do we need to always keep builder->catchanges.xip updated via SnapBuildRestore()? Isn't it sufficient that we just read and throw away contents from a snapshot if builder->catchanges.xip is non-NULL? I had additionally thought if can further optimize this solution to just store this additional information when we need to serialize for checkpoint record but I think that won't work because walsender can restart even without resatart of server in which case the same problem can occur. I am not if sure there is a way to further optimize this solution, let me know if you have any ideas? -- With Regards, Amit Kapila.
Commits
-
Fix the incorrect assertion introduced in commit 7f13ac8123.
- d2169c998553 16.0 landed
-
Fix catalog lookup with the wrong snapshot during logical decoding.
- 7f13ac812313 16.0 landed
- 272248a0c1b1 15.0 landed
- 68dcce247f1a 14.6 landed
- 547b963683e3 13.9 landed
- 794460783125 12.13 landed
- e721123b7a0c 11.18 landed
- bf0718c137c4 10.23 landed
-
Clean up assorted failures under clang's -fsanitize=undefined checks.
- 46ab07ffda9d 15.0 cited