XLogCtl->ckptFullXid is unused

Started by Nathan Bossart6 months ago3 messages
#1Nathan Bossart
nathandbossart@gmail.com
1 attachment(s)

I just noticed $SUBJECT. This seems to be an oversight in commit 2fc7af5,
which simultaneously combined ckptXidEpoch and ckptXid into ckptFullXid and
removed the only use of that information, i.e., GetNextXidAndEpoch(). Any
objections if I remove it now?

--
nathan

Attachments:

v1-0001-Remove-XLogCtl-ckptFullXid.patchtext/plain; charset=us-asciiDownload
From 19a915582492a2a6a02a0c9865aa74fdcb3e66a1 Mon Sep 17 00:00:00 2001
From: Nathan Bossart <nathan@postgresql.org>
Date: Fri, 11 Jul 2025 15:17:27 -0500
Subject: [PATCH v1 1/1] Remove XLogCtl->ckptFullXid.

---
 src/backend/access/transam/xlog.c | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 88fb9b45b2a..8e7827c6ed9 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -449,7 +449,6 @@ typedef struct XLogCtlData
 	/* Protected by info_lck: */
 	XLogwrtRqst LogwrtRqst;
 	XLogRecPtr	RedoRecPtr;		/* a recent copy of Insert->RedoRecPtr */
-	FullTransactionId ckptFullXid;	/* nextXid of latest checkpoint */
 	XLogRecPtr	asyncXactLSN;	/* LSN of newest async commit/abort */
 	XLogRecPtr	replicationSlotMinLSN;	/* oldest LSN needed by any slot */
 
@@ -5744,7 +5743,6 @@ StartupXLOG(void)
 	SetMultiXactIdLimit(checkPoint.oldestMulti, checkPoint.oldestMultiDB, true);
 	SetCommitTsLimit(checkPoint.oldestCommitTsXid,
 					 checkPoint.newestCommitTsXid);
-	XLogCtl->ckptFullXid = checkPoint.nextXid;
 
 	/*
 	 * Clear out any old relcache cache files.  This is *necessary* if we do
@@ -7437,11 +7435,6 @@ CreateCheckPoint(int flags)
 	UpdateControlFile();
 	LWLockRelease(ControlFileLock);
 
-	/* Update shared-memory copy of checkpoint XID/epoch */
-	SpinLockAcquire(&XLogCtl->info_lck);
-	XLogCtl->ckptFullXid = checkPoint.nextXid;
-	SpinLockRelease(&XLogCtl->info_lck);
-
 	/*
 	 * We are now done with critical updates; no need for system panic if we
 	 * have trouble while fooling with old log segments.
@@ -8516,11 +8509,6 @@ xlog_redo(XLogReaderState *record)
 		ControlFile->checkPointCopy.nextXid = checkPoint.nextXid;
 		LWLockRelease(ControlFileLock);
 
-		/* Update shared-memory copy of checkpoint XID/epoch */
-		SpinLockAcquire(&XLogCtl->info_lck);
-		XLogCtl->ckptFullXid = checkPoint.nextXid;
-		SpinLockRelease(&XLogCtl->info_lck);
-
 		/*
 		 * We should've already switched to the new TLI before replaying this
 		 * record.
@@ -8577,11 +8565,6 @@ xlog_redo(XLogReaderState *record)
 		ControlFile->checkPointCopy.nextXid = checkPoint.nextXid;
 		LWLockRelease(ControlFileLock);
 
-		/* Update shared-memory copy of checkpoint XID/epoch */
-		SpinLockAcquire(&XLogCtl->info_lck);
-		XLogCtl->ckptFullXid = checkPoint.nextXid;
-		SpinLockRelease(&XLogCtl->info_lck);
-
 		/* TLI should not change in an on-line checkpoint */
 		(void) GetCurrentReplayRecPtr(&replayTLI);
 		if (checkPoint.ThisTimeLineID != replayTLI)
-- 
2.39.5 (Apple Git-154)

#2Aleksander Alekseev
aleksander@tigerdata.com
In reply to: Nathan Bossart (#1)
Re: XLogCtl->ckptFullXid is unused

Hi Nathan,

I just noticed $SUBJECT. This seems to be an oversight in commit 2fc7af5,
which simultaneously combined ckptXidEpoch and ckptXid into ckptFullXid

and

removed the only use of that information, i.e., GetNextXidAndEpoch(). Any
objections if I remove it now?

Good catch. I don't see any reason why we might want to keep ckptFullXid.
Also I checked if there are any references left to this field - there are
none.

#3Nathan Bossart
nathandbossart@gmail.com
In reply to: Aleksander Alekseev (#2)
Re: XLogCtl->ckptFullXid is unused

On Sat, Jul 12, 2025 at 12:32:31AM +0300, Aleksander Alekseev wrote:

Good catch. I don't see any reason why we might want to keep ckptFullXid.
Also I checked if there are any references left to this field - there are
none.

Thanks, committed.

--
nathan