Re: Fix lag columns in pg_stat_replication not advancing when replay LSN stalls

From: Xuneng Zhou <xunengzhou(at)gmail(dot)com>
To: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
Cc: Shinya Kato <shinya11(dot)kato(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
Subject: Re: Fix lag columns in pg_stat_replication not advancing when replay LSN stalls
Date: 2025-10-22 07:49:18
Message-ID: CABPTF7VSPGEM8MmZukqK_5_s8KU1W-fx+DrTG064BQgmMG2wBw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On Wed, Oct 22, 2025 at 10:34 AM Fujii Masao <masao(dot)fujii(at)gmail(dot)com> wrote:
>
> On Tue, Oct 21, 2025 at 11:52 PM Xuneng Zhou <xunengzhou(at)gmail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nazir Bilal Yavuz 2025-10-22 08:04:18 Re: Improve docs syntax checking and enable it in the meson build
Previous Message Michael Paquier 2025-10-22 07:33:25 Re: Panic during xlog building with big values