diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 09d4dff..cf73b58 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5759,9 +5759,6 @@ StartupXLOG(void) /* Handle interrupt signals of startup process */ HandleStartupProcInterrupts(); - /* Allow read-only connections if we're consistent now */ - CheckRecoveryConsistency(); - /* * Have we reached our recovery target? */ @@ -5833,6 +5830,9 @@ StartupXLOG(void) /* Pop the error context stack */ error_context_stack = errcallback.previous; + /* Allow read-only connections if we're consistent now */ + CheckRecoveryConsistency(); + if (!XLogRecPtrIsInvalid(ControlFile->backupStartPoint) && XLByteLE(ControlFile->backupEndPoint, EndRecPtr)) { diff --git a/src/backend/catalog/storage.c b/src/backend/catalog/storage.c index 993bc49..d34ab65 100644 --- a/src/backend/catalog/storage.c +++ b/src/backend/catalog/storage.c @@ -519,6 +519,12 @@ smgr_redo(XLogRecPtr lsn, XLogRecord *record) visibilitymap_truncate(rel, xlrec->blkno); FreeFakeRelcacheEntry(rel); + + /* + * Xlogs before this record is unrepeatable, so winding + * minRecoveryPoint to here. + */ + XLogFlush(lsn); } else elog(PANIC, "smgr_redo: unknown op code %u", info);