From 0f699af7b69451d6fee8ebe305a4abe294bcf93d Mon Sep 17 00:00:00 2001 From: openGaussDev Date: Fri, 4 Mar 2022 19:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=20=E8=A7=A3=E5=86=B3ustore=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E5=A4=87=E6=9C=BA=E4=B8=8A=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=A7=A3=E7=A0=81=E5=92=8C=E5=A4=87=E6=9C=BA?= =?UTF-8?q?=E8=AF=BB=E4=B8=9A=E5=8A=A1=EF=BC=8C=E5=A4=87=E6=9C=BA=E4=B8=8A?= =?UTF-8?q?=E6=AF=8F=E7=A7=92=E6=89=93=E5=8D=B0=E7=BA=A6=E7=99=BE=E6=9D=A1?= =?UTF-8?q?=E6=97=A5=E5=BF=97=EF=BC=9AWARNING:=20[CheckLastRecordSize:503]?= =?UTF-8?q?last=20record=20size=20697=20!=3D=20xlog=20last=20record=20size?= =?UTF-8?q?=20689?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Offering: openGaussDev More detail: 解决ustore模式下,备机上运行逻辑解码和备机读业务,备机上每秒打印约百条日志:WARNING: [CheckLastRecordSize:503]last record size 697 != xlog last record size 689 Match-id-bafd821a73fa2dba5919b38c1af024cc6761f938 --- src/gausskernel/storage/access/ustore/knl_uredo.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gausskernel/storage/access/ustore/knl_uredo.cpp b/src/gausskernel/storage/access/ustore/knl_uredo.cpp index cf0e193c5..6744a6282 100644 --- a/src/gausskernel/storage/access/ustore/knl_uredo.cpp +++ b/src/gausskernel/storage/access/ustore/knl_uredo.cpp @@ -356,7 +356,8 @@ static UndoRecPtr PrepareAndInsertUndoRecordForDeleteRedo(XLogReaderState *recor * If the WAL stream contains undo tuple, then replace it with the * explicitly stored tuple. */ - Size datalen = recordlen - SizeOfXLUndoHeader - SizeOfUHeapDelete - undoMetaSize - SizeOfUHeapHeader - readSize; + Size datalen = recordlen - SizeOfXLUndoHeader - SizeOfUHeapDelete - undoMetaSize - SizeOfUHeapHeader - + readSize - (hasCSN ? sizeof(CommitSeqNo) : 0); char *data = (char *)xlrec + SizeOfUHeapDelete + SizeOfXLUndoHeader + undoMetaSize + readSize; utup->disk_tuple = GetUHeapDiskTupleFromRedoData(data, &datalen, tbuf, false); @@ -856,8 +857,8 @@ static UndoRecPtr PrepareAndInsertUndoRecordForUpdateRedo(XLogReaderState *recor } char *data = (char *)curxlogptr; - Size datalen = recordlen - SizeOfUHeapHeader - SizeOfXLUndoHeader - SizeOfUHeapUpdate - - undoMetaSize - SizeOfXLUndoHeader - initPageXtraInfo - readSize; + Size datalen = recordlen - SizeOfUHeapHeader - SizeOfXLUndoHeader - SizeOfUHeapUpdate - + undoMetaSize - SizeOfXLUndoHeader - initPageXtraInfo - readSize - (hasCSN ? sizeof(CommitSeqNo) : 0); oldtup->disk_tuple = GetUHeapDiskTupleFromRedoData(data, &datalen, tbuf, false); oldtup->disk_tuple_size = datalen;