diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index ccef3f0..e51b97e 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8259,12 +8259,20 @@ CreateCheckPoint(int flags) * better if you don't need to keep two WAL segments around to recover the * checkpoint. */ + elog(LOG, "prevPtr %X/%X, curInsert %X/%X, progress %X/%X, redo %X/%X", + (uint32) (prevPtr >> 32), (uint32) prevPtr, + (uint32) (curInsert >> 32), (uint32) curInsert, + (uint32) (GetProgressRecPtr() >> 32), (uint32) GetProgressRecPtr(), + (uint32) (ControlFile->checkPointCopy.redo >> 32), + (uint32) ControlFile->checkPointCopy.redo); if ((flags & (CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_END_OF_RECOVERY | CHECKPOINT_FORCE)) == 0) { + elog(LOG, "Not a forced or shutdown checkpoint"); if (GetProgressRecPtr() == prevPtr && prevPtr / XLOG_SEG_SIZE == curInsert / XLOG_SEG_SIZE) { + elog(LOG, "Checkpoint is skipped"); WALInsertLockRelease(); LWLockRelease(CheckpointLock); END_CRIT_SECTION(); @@ -8437,7 +8445,11 @@ CreateCheckPoint(int flags) * snapshots need to be logged, and skip them on idle systems. */ if (!shutdown && XLogStandbyInfoActive()) + { progress_lsn = LogStandbySnapshot(); + elog(LOG, "snapshot taken by checkpoint %X/%X", + (uint32) (progress_lsn >> 32), (uint32) progress_lsn); + } START_CRIT_SECTION(); diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index 22374b0..d55e446 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -308,17 +308,25 @@ BackgroundWriterMain(void) { TimestampTz timeout = 0; TimestampTz now = GetCurrentTimestamp(); + XLogRecPtr progress_lsn = GetProgressRecPtr(); + XLogRecPtr insert_lsn = GetInsertRecPtr(); timeout = TimestampTzPlusMilliseconds(last_snapshot_ts, LOG_SNAPSHOT_INTERVAL_MS); + elog(LOG, "bgwriter progress_lsn %X/%X, insert_lsn %X/%X", + (uint32) (progress_lsn >> 32), (uint32) progress_lsn, + (uint32) (insert_lsn >> 32), (uint32) insert_lsn); /* * only log if enough time has passed. */ if (now >= timeout && - GetProgressRecPtr() != GetInsertRecPtr()) + progress_lsn != insert_lsn) { - (void) LogStandbySnapshot(); + XLogRecPtr lsn; + lsn = LogStandbySnapshot(); + elog(LOG, "snapshot taken by bgwriter %X/%X", + (uint32) (lsn >> 32), (uint32) lsn); last_snapshot_ts = now; } }