diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index 65465d6..7348296 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -315,14 +315,19 @@ BackgroundWriterMain(void) LOG_SNAPSHOT_INTERVAL_MS); /* - * only log if enough time has passed and some xlog record has - * been inserted. + * Only log if enough time has passed and some xlog record has + * been inserted on a new segment. */ - if (now >= timeout && - last_snapshot_lsn != GetXLogInsertRecPtr()) + if (now >= timeout) { - last_snapshot_lsn = LogStandbySnapshot(); - last_snapshot_ts = now; + XLogRecPtr insert_lsn = GetXLogInsertRecPtr(); + + if (last_snapshot_lsn != insert_lsn && + (insert_lsn % XLOG_SEG_SIZE) != SizeOfXLogLongPHD) + { + last_snapshot_lsn = LogStandbySnapshot(); + last_snapshot_ts = now; + } } }