Re: Fix lag columns in pg_stat_replication not advancing when replay LSN stalls
Xuneng Zhou <xunengzhou@gmail.com>
From: Xuneng Zhou <xunengzhou@gmail.com>
To: Fujii Masao <masao.fujii@gmail.com>
Cc: Shinya Kato <shinya11.kato@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Chao Li <li.evan.chao@gmail.com>
Date: 2025-10-22T07:49:18Z
Lists: pgsql-hackers
Hi, On Wed, Oct 22, 2025 at 10:34 AM Fujii Masao <masao.fujii@gmail.com> wrote: > > On Tue, Oct 21, 2025 at 11:52 PM Xuneng Zhou <xunengzhou@gmail.com> wrote: > > The patch LGTM. > > Thanks for the review! > I've pushed the patch and backpatched it to all supported versions. > > > > I am wondering whether it is helpful to add some > > comments for this overflowed array > > Yes, do you have any specific suggestions? > How about something like: /* * Overflow entries for read heads that collide with the write head. * * When the cyclic buffer fills (write head is about to collide with a read * head), we save that read head's current sample here and mark it as using * overflow (read_heads[i] = -1). This allows the write head to continue * advancing while the overflowed mode continues lag computation using the * saved sample. * * Once the standby's reported LSN advances past the overflow entry's LSN, * we transition back to normal buffer-based tracking. */ > > and replacing literal zeros with the constant InvalidXLogRecPtr for > > better readability. > > > > /* InvalidXLogRecPtr means no overflow yet */ > > if (lag_tracker->overflowed[i].lsn == InvalidXLogRecPtr) > > I couldn't find any code like "lag_tracker->overflowed[i].lsn == 0", > so I'm not sure which part should be replaced with InvalidXLogRecPtr. > Could you point me to the exact location? > Sorry for the noise here, I mean if (lag_tracker->read_heads[head] == InvalidXLogRecPtr) before. But with this change, position 0 would be treated as overflow mode, which is clearly wrong... Best, Xuneng
Commits
-
Add comments explaining overflow entries in the replication lag tracker.
- b4810b4bb885 13.23 landed
- 10799d025f2c 14.20 landed
- c16154bfa2a1 15.15 landed
- 4d707f2fd728 16.11 landed
- 8ceab82ca526 17.7 landed
- 5f88da5de3f2 18.1 landed
- abc2b71383b4 19 (unreleased) landed
-
Fix stalled lag columns in pg_stat_replication when replay LSN stops advancing.
- 7d7ebdb800fe 13.23 landed
- a7ab6ce6a0fc 14.20 landed
- 59b215f7217f 15.15 landed
- 2e55cf4efc8d 16.11 landed
- 62d5ee75bbc4 17.7 landed
- 9670032cc51f 18.1 landed
- 883a95646a8e 19 (unreleased) landed