From 3da2b81d052f39580cd8336853668db6233d2243 Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Wed, 27 Dec 2023 16:32:40 -0500 Subject: [PATCH v2 4/5] Bgwriter maintains global LSNTimeline Insert new LSN, time pairs to the global LSNTimeline stored in PgStat_WalStats in the background writer's main loop. This ensures that new values are added to the timeline in a regular manner. --- src/backend/postmaster/bgwriter.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index d7d6cc0cd7b..ec6828aa2a5 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -277,6 +277,7 @@ BackgroundWriterMain(void) { TimestampTz timeout = 0; TimestampTz now = GetCurrentTimestamp(); + XLogRecPtr current_lsn = GetLastImportantRecPtr(); timeout = TimestampTzPlusMilliseconds(last_snapshot_ts, LOG_SNAPSHOT_INTERVAL_MS); @@ -289,10 +290,11 @@ BackgroundWriterMain(void) * the end of the record. */ if (now >= timeout && - last_snapshot_lsn <= GetLastImportantRecPtr()) + last_snapshot_lsn <= current_lsn) { last_snapshot_lsn = LogStandbySnapshot(); last_snapshot_ts = now; + pgstat_wal_update_lsntimeline(now, current_lsn); } } -- 2.37.2