diff --git a/src/gausskernel/storage/access/transam/xlog.cpp b/src/gausskernel/storage/access/transam/xlog.cpp index edef57e3f..65f00b63d 100644 --- a/src/gausskernel/storage/access/transam/xlog.cpp +++ b/src/gausskernel/storage/access/transam/xlog.cpp @@ -11730,10 +11730,14 @@ bool CreateRestartPoint(int flags) if (ENABLE_INCRE_CKPT) { XLogRecPtr MinRecLSN = ckpt_get_min_rec_lsn(); if (!XLogRecPtrIsInvalid(MinRecLSN) && XLByteLT(MinRecLSN, lastCheckPoint.redo)) { - ereport(PANIC, (errmsg("current dirty page list head recLSN %08X/%08X smaller than redo lsn %08X/%08X", + ereport(WARNING, (errmsg("current dirty page list head recLSN %08X/%08X smaller than redo lsn %08X/%08X", (uint32)(MinRecLSN >> XLOG_LSN_SWAP), (uint32)MinRecLSN, (uint32)(lastCheckPoint.redo >> XLOG_LSN_SWAP), (uint32)lastCheckPoint.redo))); + LWLockRelease(CheckpointLock); + smgrsync_with_absorption(); + gstrace_exit(GS_TRC_ID_CreateRestartPoint); + return false; } }