]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Add comments explaining overflow entries in the replication lag tracker. REL_17_STABLE github/REL_17_STABLE
authorFujii Masao <fujii@postgresql.org>
Thu, 23 Oct 2025 04:24:56 +0000 (13:24 +0900)
committerFujii Masao <fujii@postgresql.org>
Thu, 23 Oct 2025 04:26:30 +0000 (13:26 +0900)
Commit 883a95646a8 introduced overflow entries in the replication lag tracker
to fix an issue where lag columns in pg_stat_replication could stall when
the replay LSN stopped advancing.

This commit adds comments clarifying the purpose and behavior of overflow
entries to improve code readability and understanding.

Since commit 883a95646a8 was recently applied and backpatched to all
supported branches, this follow-up commit is also backpatched accordingly.

Author: Xuneng Zhou <xunengzhou@gmail.com>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CABPTF7VxqQA_DePxyZ7Y8V+ErYyXkmwJ1P6NC+YC+cvxMipWKw@mail.gmail.com
Backpatch-through: 13

src/backend/replication/walsender.c

index 16adc2d55328873b45580c09c709a4c19114bf2c..1c10a7793df1a90218dd90333527bd3de8626753 100644 (file)
@@ -229,6 +229,19 @@ typedef struct
        int                     write_head;
        int                     read_heads[NUM_SYNC_REP_WAIT_MODE];
        WalTimeSample last_read[NUM_SYNC_REP_WAIT_MODE];
+
+       /*
+        * 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.
+        */
        WalTimeSample overflowed[NUM_SYNC_REP_WAIT_MODE];
 } LagTracker;