From 49cb438b8fabe8f6da3c6ca550fa5959f47b315c Mon Sep 17 00:00:00 2001 From: movead Date: Wed, 27 Sep 2023 15:56:28 +0800 Subject: [PATCH] in GetReplyingRecPtr pick bigger between curReplayingReadRecPtr and lastReplayedEndRecPtr; --- .../access/transam/parallel_recovery/page_redo.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/storage/access/transam/parallel_recovery/page_redo.cpp b/src/gausskernel/storage/access/transam/parallel_recovery/page_redo.cpp index 5a46bb1b8..52ac55e95 100755 --- a/src/gausskernel/storage/access/transam/parallel_recovery/page_redo.cpp +++ b/src/gausskernel/storage/access/transam/parallel_recovery/page_redo.cpp @@ -1025,8 +1025,15 @@ XLogRecPtr GetCompletedRecPtr(PageRedoWorker *worker) XLogRecPtr GetReplyingRecPtr(PageRedoWorker *worker) { + XLogRecPtr curReplayingReadRecPtr; + XLogRecPtr lastReplayedEndRecPtr; + XLogRecPtr result; pg_read_barrier(); - return pg_atomic_read_u64(&worker->curReplayingReadRecPtr); + + curReplayingReadRecPtr = pg_atomic_read_u64(&worker->curReplayingReadRecPtr); + lastReplayedEndRecPtr = pg_atomic_read_u64(&worker->lastReplayedEndRecPtr); + + return lastReplayedEndRecPtr > curReplayingReadRecPtr ? lastReplayedEndRecPtr : curReplayingReadRecPtr; } /* automic write for lastReplayedReadRecPtr and lastReplayedEndRecPtr */