v3-0002-Improve-log-messages-when-invalid-checkpoint-record-.patch

text/plain

Filename: v3-0002-Improve-log-messages-when-invalid-checkpoint-record-.patch
Type: text/plain
Part: 1
Message: Re: Remove useless arguments in ReadCheckpointRecord().

Patch

Format: format-patch
Series: patch v3-0002
Subject: Improve log messages when invalid checkpoint record was found.
File+
src/backend/access/transam/xlogrecovery.c 14 8
From 4358d1585121ad5685c08f19516b49d4e3045640 Mon Sep 17 00:00:00 2001
From: Fujii Masao <fujii@postgresql.org>
Date: Fri, 22 Jul 2022 10:05:33 +0900
Subject: [PATCH 2/2] Improve log messages when invalid checkpoint record was
 found.

---
 src/backend/access/transam/xlogrecovery.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c
index e383c2123a..07bb1f03b8 100644
--- a/src/backend/access/transam/xlogrecovery.c
+++ b/src/backend/access/transam/xlogrecovery.c
@@ -638,7 +638,7 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
 		else
 		{
 			ereport(FATAL,
-					(errmsg("could not locate required checkpoint record"),
+					(errmsg("could not locate a valid checkpoint record in backup_label file"),
 					 errhint("If you are restoring from a backup, touch \"%s/recovery.signal\" and add required recovery options.\n"
 							 "If you are not restoring from a backup, try removing the file \"%s/backup_label\".\n"
 							 "Be careful: removing \"%s/backup_label\" will result in a corrupt cluster if restoring from a backup.",
@@ -761,7 +761,7 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
 			 * simplify processing around checkpoints.
 			 */
 			ereport(PANIC,
-					(errmsg("could not locate a valid checkpoint record")));
+					(errmsg("could not locate a valid checkpoint record in control file")));
 		}
 		memcpy(&checkPoint, XLogRecGetData(xlogreader), sizeof(CheckPoint));
 		wasShutdown = ((record->xl_info & ~XLR_INFO_MASK) == XLOG_CHECKPOINT_SHUTDOWN);
@@ -3856,7 +3856,8 @@ ReadCheckpointRecord(XLogPrefetcher *xlogprefetcher, XLogRecPtr RecPtr,
 	if (!XRecOffIsValid(RecPtr))
 	{
 		ereport(LOG,
-				(errmsg("invalid checkpoint location")));
+				(errmsg("invalid checkpoint location: %X/%X",
+						LSN_FORMAT_ARGS(RecPtr))));
 		return NULL;
 	}
 
@@ -3866,13 +3867,15 @@ ReadCheckpointRecord(XLogPrefetcher *xlogprefetcher, XLogRecPtr RecPtr,
 	if (record == NULL)
 	{
 		ereport(LOG,
-				(errmsg("invalid checkpoint record")));
+				(errmsg("invalid checkpoint record at %X/%X",
+						LSN_FORMAT_ARGS(RecPtr))));
 		return NULL;
 	}
 	if (record->xl_rmid != RM_XLOG_ID)
 	{
 		ereport(LOG,
-				(errmsg("invalid resource manager ID in checkpoint record")));
+				(errmsg("invalid resource manager ID %u in checkpoint record at %X/%X",
+						record->xl_rmid, LSN_FORMAT_ARGS(RecPtr))));
 		return NULL;
 	}
 	info = record->xl_info & ~XLR_INFO_MASK;
@@ -3880,13 +3883,16 @@ ReadCheckpointRecord(XLogPrefetcher *xlogprefetcher, XLogRecPtr RecPtr,
 		info != XLOG_CHECKPOINT_ONLINE)
 	{
 		ereport(LOG,
-				(errmsg("invalid xl_info in checkpoint record")));
+				(errmsg("invalid xl_info in checkpoint record at %X/%X",
+						LSN_FORMAT_ARGS(RecPtr))));
 		return NULL;
 	}
-	if (record->xl_tot_len != SizeOfXLogRecord + SizeOfXLogRecordDataHeaderShort + sizeof(CheckPoint))
+	if (record->xl_tot_len != SizeOfXLogRecord +
+		SizeOfXLogRecordDataHeaderShort + sizeof(CheckPoint))
 	{
 		ereport(LOG,
-				(errmsg("invalid length of checkpoint record")));
+				(errmsg("checkpoint record with invalid length at %X/%X",
+						LSN_FORMAT_ARGS(RecPtr))));
 		return NULL;
 	}
 	return record;
-- 
2.36.0