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

Fujii Masao <masao.fujii@gmail.com>

From: Fujii Masao <masao.fujii@gmail.com>
To: Xuneng Zhou <xunengzhou@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-22T14:45:39Z
Lists: pgsql-hackers

Attachments

On Wed, Oct 22, 2025 at 4:49 PM Xuneng Zhou <xunengzhou@gmail.com> wrote:
> 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.
>  */

LGTM. Thanks!

I've created a patch adding your suggested comments (attached).
Since this is a follow-up to commit 883a95646a8, which was recently applied
and backpatched to all supported branches, I think we should backpatch
this one as well. Thought?

Regards,

-- 
Fujii Masao

Commits

  1. Add comments explaining overflow entries in the replication lag tracker.

  2. Fix stalled lag columns in pg_stat_replication when replay LSN stops advancing.