Re: lastOverflowedXid does not handle transaction ID wraparound
Nikolay Samokhvalov <samokhvalov@gmail.com>
From: Nikolay Samokhvalov <samokhvalov@gmail.com>
To: Stan Hu <stanhu@gmail.com>
Cc: Andrey Borodin <x4mmm@yandex-team.ru>,
Dmitry Dolgov <9erthalion6@gmail.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>,
Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-10-25T18:41:03Z
Lists: pgsql-hackers
On Thu, Oct 21, 2021 at 07:21 Stan Hu <stanhu@gmail.com> wrote: > On Wed, Oct 20, 2021 at 9:01 PM Kyotaro Horiguchi > <horikyota.ntt@gmail.com> wrote: > > > > lastOverflowedXid is the smallest subxid that possibly exists but > > possiblly not known to the standby. So if all top-level transactions > > older than lastOverflowedXid end, that means that all the > > subtransactions in doubt are known to have been ended. > > Thanks for the patch! I verified that it appears to reset > lastOverflowedXid properly. > Is it right time to register the patch in the current commit fest, right? (How to do that?) On a separate note, I think it would be really good to improve observability for SLRUs -- particularly for Subtrans SLRU and this overflow-related aspects. pg_stat_slru added in PG13 is really helpful, but not enough to troubleshoot, analyze and tune issues like this, and the patches related to SLRU. Basic ideas: - expose to the user how many pages are currently used (especially useful if SLRU sizes will be configurable, see https://commitfest.postgresql.org/34/2627/) - Andrew Borodin also expressed the idea to extend pageinspect to allow seeing the content of SLRUs - a more specific thing: allow seeing lastOverflowedXid somehow (via SQL or in logs) - we see how important it for standbys health, but we cannot see it now. Any ideas in the direction of observability? Nik >
Commits
-
Reset lastOverflowedXid on standby when needed
- 05e6e78c1840 15.0 landed
- b0f6bd48f35d 14.1 landed
- 7381b79ade47 9.6.24 landed
- 774d00573966 10.19 landed
- 691c0df73a74 11.14 landed
- 8f779a1a3eb6 12.9 landed
- e1fee28a0441 13.5 landed
-
Fix variable shadowing in procarray.c.
- dc899146dbf0 15.0 cited
-
Move InRecovery and standbyState global vars to xlogutils.c.
- 317632f3073f 15.0 cited