From c437c754464ae5f161a88fd6a6d82ca50222ee14 Mon Sep 17 00:00:00 2001 From: cca5507 Date: Fri, 8 Dec 2023 20:59:29 +0800 Subject: [PATCH] fix assert failed in PageCheckWhenChosedElimination --- src/gausskernel/storage/access/redo/redo_xlogutils.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gausskernel/storage/access/redo/redo_xlogutils.cpp b/src/gausskernel/storage/access/redo/redo_xlogutils.cpp index e5bf4901f..6fb630b60 100644 --- a/src/gausskernel/storage/access/redo/redo_xlogutils.cpp +++ b/src/gausskernel/storage/access/redo/redo_xlogutils.cpp @@ -1712,10 +1712,11 @@ void ExtremeRtoFlushBuffer(RedoBufferInfo *bufferinfo, bool updateFsm) } else { if (bufferinfo->pageinfo.page != NULL) { BufferDesc *bufDesc = GetBufferDescriptor(bufferinfo->buf - 1); - /* backends may mark buffer dirty already */ - if (!(bufDesc->state & BM_DIRTY) && - (bufferinfo->dirtyflag || XLByteLT(bufDesc->extra->lsn_on_disk, PageGetLSN(bufferinfo->pageinfo.page)))) { - MarkBufferDirty(bufferinfo->buf); + if (bufferinfo->dirtyflag || XLByteLT(bufDesc->extra->lsn_on_disk, PageGetLSN(bufferinfo->pageinfo.page))) { + /* backends may mark buffer dirty already */ + if (!(bufDesc->state & BM_DIRTY)) { + MarkBufferDirty(bufferinfo->buf); + } if (!bufferinfo->dirtyflag && bufferinfo->blockinfo.forknum == MAIN_FORKNUM) { int mode = WARNING; #ifdef USE_ASSERT_CHECKING