From e9c1bafa4c4ef5c8f8a9810e5f4041e58b6ca9cb Mon Sep 17 00:00:00 2001 From: openGaussDev Date: Thu, 10 Mar 2022 14:16:29 +0800 Subject: [PATCH] =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=20truncatecsnlog=20cutoff?= =?UTF-8?q?=5Fxid=20=E8=BF=87=E5=A4=A7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Offering: openGaussDev More detail: 修复 truncatecsnlog cutoff_xid 过大的问题 Match-id-70294496a4db845521a52ac94f0a2b6556401c2e --- src/gausskernel/storage/access/transam/xlog.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gausskernel/storage/access/transam/xlog.cpp b/src/gausskernel/storage/access/transam/xlog.cpp index 5a079609b..158c4ab49 100755 --- a/src/gausskernel/storage/access/transam/xlog.cpp +++ b/src/gausskernel/storage/access/transam/xlog.cpp @@ -11827,6 +11827,10 @@ void CreateCheckPoint(int flags) if (TransactionIdIsNormal(globalXmin) && TransactionIdPrecedes(globalXmin, cutoff_xid)) { cutoff_xid = globalXmin; } + TransactionId oldestXidInUndo = pg_atomic_read_u64(&g_instance.undo_cxt.oldestXidInUndo); + if (TransactionIdIsNormal(oldestXidInUndo) && TransactionIdPrecedes(oldestXidInUndo, cutoff_xid)) { + cutoff_xid = oldestXidInUndo; + } TruncateCSNLOG(cutoff_xid); t_thrd.checkpoint_cxt.last_truncate_log_time = now; } @@ -12623,6 +12627,10 @@ bool CreateRestartPoint(int flags) if (TransactionIdIsNormal(globalXmin) && TransactionIdPrecedes(globalXmin, cutoffXid)) { cutoffXid = globalXmin; } + TransactionId oldestXidInUndo = pg_atomic_read_u64(&g_instance.undo_cxt.oldestXidInUndo); + if (TransactionIdIsNormal(oldestXidInUndo) && TransactionIdPrecedes(oldestXidInUndo, cutoffXid)) { + cutoffXid = oldestXidInUndo; + } TruncateCSNLOG(cutoffXid); t_thrd.checkpoint_cxt.last_truncate_log_time = now; }