From 52c4e269aac6ae21ed946baf65c734d68f7f27ab Mon Sep 17 00:00:00 2001 From: chendong76 <1209756284@qq.com> Date: Tue, 18 Jan 2022 16:05:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A5=E5=BF=97=E9=87=8F?= =?UTF-8?q?=E5=B0=91=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=9E=81=E8=87=B4?= =?UTF-8?q?RTO=20lsn=E6=8E=A8=E8=BF=9B=E6=85=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/storage/access/transam/xlog.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/storage/access/transam/xlog.cpp b/src/gausskernel/storage/access/transam/xlog.cpp index 1eb62e986..03e988b37 100755 --- a/src/gausskernel/storage/access/transam/xlog.cpp +++ b/src/gausskernel/storage/access/transam/xlog.cpp @@ -16540,6 +16540,8 @@ int ParallelXLogReadWorkBufRead(XLogReaderState *xlogreader, XLogRecPtr targetPa XLByteAdvance(RecPtr, reqLen); XLogRecPtr expectedRecPtr = CalcExpectLsn(RecPtr); + uint64 waitXLogCount = 0; + const uint64 pushLsnCount = 2; pg_atomic_write_u64(&extreme_rto::g_dispatcher->rtoXlogBufState.expectLsn, expectedRecPtr); for (;;) { @@ -16582,6 +16584,7 @@ int ParallelXLogReadWorkBufRead(XLogReaderState *xlogreader, XLogRecPtr targetPa /* just make sure source info is correct... */ t_thrd.xlog_cxt.readSource = XLOG_FROM_STREAM; t_thrd.xlog_cxt.XLogReceiptSource = XLOG_FROM_STREAM; + waitXLogCount = 0; if ((targetPagePtr / XLOG_BLCKSZ) != (t_thrd.xlog_cxt.receivedUpto / XLOG_BLCKSZ)) { t_thrd.xlog_cxt.readLen = XLOG_BLCKSZ; } else { @@ -16614,7 +16617,8 @@ int ParallelXLogReadWorkBufRead(XLogReaderState *xlogreader, XLogRecPtr targetPa */ WaitLatch(&t_thrd.shemem_ptr_cxt.XLogCtl->recoveryWakeupLatch, WL_LATCH_SET | WL_TIMEOUT, 1000L); ResetLatch(&t_thrd.shemem_ptr_cxt.XLogCtl->recoveryWakeupLatch); - extreme_rto::PushToWorkerLsn(false); + extreme_rto::PushToWorkerLsn(waitXLogCount == pushLsnCount); + ++waitXLogCount; } RedoInterruptCallBack();