mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Standardize LSN formatting by zero padding
This commit standardizes the output format for LSNs to ensure consistent representation across various tools and messages. Previously, LSNs were inconsistently printed as `%X/%X` in some contexts, while others used zero-padding. This often led to confusion when comparing. To address this, the LSN format is now uniformly set to `%X/%08X`, ensuring the lower 32-bit part is always zero-padded to eight hexadecimal digits. Author: Japin Li <japinli@hotmail.com> Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com> Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de> Discussion: https://postgr.es/m/ME0P300MB0445CA53CA0E4B8C1879AF84B641A@ME0P300MB0445.AUSP300.PROD.OUTLOOK.COM
This commit is contained in:
@@ -620,10 +620,10 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
* than ControlFile->checkPoint is used.
|
||||
*/
|
||||
ereport(LOG,
|
||||
(errmsg("starting backup recovery with redo LSN %X/%X, checkpoint LSN %X/%X, on timeline ID %u",
|
||||
LSN_FORMAT_ARGS(RedoStartLSN),
|
||||
LSN_FORMAT_ARGS(CheckPointLoc),
|
||||
CheckPointTLI)));
|
||||
errmsg("starting backup recovery with redo LSN %X/%08X, checkpoint LSN %X/%08X, on timeline ID %u",
|
||||
LSN_FORMAT_ARGS(RedoStartLSN),
|
||||
LSN_FORMAT_ARGS(CheckPointLoc),
|
||||
CheckPointTLI));
|
||||
|
||||
/*
|
||||
* When a backup_label file is present, we want to roll forward from
|
||||
@@ -636,8 +636,8 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
memcpy(&checkPoint, XLogRecGetData(xlogreader), sizeof(CheckPoint));
|
||||
wasShutdown = ((record->xl_info & ~XLR_INFO_MASK) == XLOG_CHECKPOINT_SHUTDOWN);
|
||||
ereport(DEBUG1,
|
||||
(errmsg_internal("checkpoint record is at %X/%X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc))));
|
||||
errmsg_internal("checkpoint record is at %X/%08X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc)));
|
||||
InRecovery = true; /* force recovery even if SHUTDOWNED */
|
||||
|
||||
/*
|
||||
@@ -652,23 +652,23 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
if (!ReadRecord(xlogprefetcher, LOG, false,
|
||||
checkPoint.ThisTimeLineID))
|
||||
ereport(FATAL,
|
||||
(errmsg("could not find redo location %X/%X referenced by checkpoint record at %X/%X",
|
||||
LSN_FORMAT_ARGS(checkPoint.redo), LSN_FORMAT_ARGS(CheckPointLoc)),
|
||||
errhint("If you are restoring from a backup, touch \"%s/recovery.signal\" or \"%s/standby.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.",
|
||||
DataDir, DataDir, DataDir, DataDir)));
|
||||
errmsg("could not find redo location %X/%08X referenced by checkpoint record at %X/%08X",
|
||||
LSN_FORMAT_ARGS(checkPoint.redo), LSN_FORMAT_ARGS(CheckPointLoc)),
|
||||
errhint("If you are restoring from a backup, touch \"%s/recovery.signal\" or \"%s/standby.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.",
|
||||
DataDir, DataDir, DataDir, DataDir));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ereport(FATAL,
|
||||
(errmsg("could not locate required checkpoint record at %X/%X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc)),
|
||||
errhint("If you are restoring from a backup, touch \"%s/recovery.signal\" or \"%s/standby.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.",
|
||||
DataDir, DataDir, DataDir, DataDir)));
|
||||
errmsg("could not locate required checkpoint record at %X/%08X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc)),
|
||||
errhint("If you are restoring from a backup, touch \"%s/recovery.signal\" or \"%s/standby.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.",
|
||||
DataDir, DataDir, DataDir, DataDir));
|
||||
wasShutdown = false; /* keep compiler quiet */
|
||||
}
|
||||
|
||||
@@ -773,8 +773,8 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
*/
|
||||
if (!XLogRecPtrIsInvalid(ControlFile->backupStartPoint))
|
||||
ereport(LOG,
|
||||
(errmsg("restarting backup recovery with redo LSN %X/%X",
|
||||
LSN_FORMAT_ARGS(ControlFile->backupStartPoint))));
|
||||
errmsg("restarting backup recovery with redo LSN %X/%08X",
|
||||
LSN_FORMAT_ARGS(ControlFile->backupStartPoint)));
|
||||
|
||||
/* Get the last valid checkpoint record. */
|
||||
CheckPointLoc = ControlFile->checkPoint;
|
||||
@@ -786,8 +786,8 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
if (record != NULL)
|
||||
{
|
||||
ereport(DEBUG1,
|
||||
(errmsg_internal("checkpoint record is at %X/%X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc))));
|
||||
errmsg_internal("checkpoint record is at %X/%08X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc)));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -798,8 +798,8 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
* simplify processing around checkpoints.
|
||||
*/
|
||||
ereport(PANIC,
|
||||
(errmsg("could not locate a valid checkpoint record at %X/%X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc))));
|
||||
errmsg("could not locate a valid checkpoint record at %X/%08X",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc)));
|
||||
}
|
||||
memcpy(&checkPoint, XLogRecGetData(xlogreader), sizeof(CheckPoint));
|
||||
wasShutdown = ((record->xl_info & ~XLR_INFO_MASK) == XLOG_CHECKPOINT_SHUTDOWN);
|
||||
@@ -824,8 +824,8 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
recoveryTargetName)));
|
||||
else if (recoveryTarget == RECOVERY_TARGET_LSN)
|
||||
ereport(LOG,
|
||||
(errmsg("starting point-in-time recovery to WAL location (LSN) \"%X/%X\"",
|
||||
LSN_FORMAT_ARGS(recoveryTargetLSN))));
|
||||
errmsg("starting point-in-time recovery to WAL location (LSN) \"%X/%08X\"",
|
||||
LSN_FORMAT_ARGS(recoveryTargetLSN)));
|
||||
else if (recoveryTarget == RECOVERY_TARGET_IMMEDIATE)
|
||||
ereport(LOG,
|
||||
(errmsg("starting point-in-time recovery to earliest consistent point")));
|
||||
@@ -855,7 +855,7 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
(errmsg("requested timeline %u is not a child of this server's history",
|
||||
recoveryTargetTLI),
|
||||
/* translator: %s is a backup_label file or a pg_control file */
|
||||
errdetail("Latest checkpoint in file \"%s\" is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X.",
|
||||
errdetail("Latest checkpoint in file \"%s\" is at %X/%08X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%08X.",
|
||||
haveBackupLabel ? "backup_label" : "pg_control",
|
||||
LSN_FORMAT_ARGS(CheckPointLoc),
|
||||
CheckPointTLI,
|
||||
@@ -870,15 +870,15 @@ InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdown_ptr,
|
||||
tliOfPointInHistory(ControlFile->minRecoveryPoint - 1, expectedTLEs) !=
|
||||
ControlFile->minRecoveryPointTLI)
|
||||
ereport(FATAL,
|
||||
(errmsg("requested timeline %u does not contain minimum recovery point %X/%X on timeline %u",
|
||||
recoveryTargetTLI,
|
||||
LSN_FORMAT_ARGS(ControlFile->minRecoveryPoint),
|
||||
ControlFile->minRecoveryPointTLI)));
|
||||
errmsg("requested timeline %u does not contain minimum recovery point %X/%08X on timeline %u",
|
||||
recoveryTargetTLI,
|
||||
LSN_FORMAT_ARGS(ControlFile->minRecoveryPoint),
|
||||
ControlFile->minRecoveryPointTLI));
|
||||
|
||||
ereport(DEBUG1,
|
||||
(errmsg_internal("redo record is at %X/%X; shutdown %s",
|
||||
LSN_FORMAT_ARGS(checkPoint.redo),
|
||||
wasShutdown ? "true" : "false")));
|
||||
errmsg_internal("redo record is at %X/%08X; shutdown %s",
|
||||
LSN_FORMAT_ARGS(checkPoint.redo),
|
||||
wasShutdown ? "true" : "false"));
|
||||
ereport(DEBUG1,
|
||||
(errmsg_internal("next transaction ID: " UINT64_FORMAT "; next OID: %u",
|
||||
U64FromFullTransactionId(checkPoint.nextXid),
|
||||
@@ -1253,14 +1253,14 @@ read_backup_label(XLogRecPtr *checkPointLoc, TimeLineID *backupLabelTLI,
|
||||
* is pretty crude, but we are not expecting any variability in the file
|
||||
* format).
|
||||
*/
|
||||
if (fscanf(lfp, "START WAL LOCATION: %X/%X (file %08X%16s)%c",
|
||||
if (fscanf(lfp, "START WAL LOCATION: %X/%08X (file %08X%16s)%c",
|
||||
&hi, &lo, &tli_from_walseg, startxlogfilename, &ch) != 5 || ch != '\n')
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
|
||||
errmsg("invalid data in file \"%s\"", BACKUP_LABEL_FILE)));
|
||||
RedoStartLSN = ((uint64) hi) << 32 | lo;
|
||||
RedoStartTLI = tli_from_walseg;
|
||||
if (fscanf(lfp, "CHECKPOINT LOCATION: %X/%X%c",
|
||||
if (fscanf(lfp, "CHECKPOINT LOCATION: %X/%08X%c",
|
||||
&hi, &lo, &ch) != 3 || ch != '\n')
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
|
||||
@@ -1332,7 +1332,7 @@ read_backup_label(XLogRecPtr *checkPointLoc, TimeLineID *backupLabelTLI,
|
||||
tli_from_file, BACKUP_LABEL_FILE)));
|
||||
}
|
||||
|
||||
if (fscanf(lfp, "INCREMENTAL FROM LSN: %X/%X\n", &hi, &lo) > 0)
|
||||
if (fscanf(lfp, "INCREMENTAL FROM LSN: %X/%08X\n", &hi, &lo) > 0)
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
|
||||
errmsg("this is an incremental backup, not a data directory"),
|
||||
@@ -1722,8 +1722,8 @@ PerformWalRecovery(void)
|
||||
if (record->xl_rmid != RM_XLOG_ID ||
|
||||
(record->xl_info & ~XLR_INFO_MASK) != XLOG_CHECKPOINT_REDO)
|
||||
ereport(FATAL,
|
||||
(errmsg("unexpected record type found at redo point %X/%X",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr))));
|
||||
errmsg("unexpected record type found at redo point %X/%08X",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr)));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1745,8 +1745,8 @@ PerformWalRecovery(void)
|
||||
RmgrStartup();
|
||||
|
||||
ereport(LOG,
|
||||
(errmsg("redo starts at %X/%X",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr))));
|
||||
errmsg("redo starts at %X/%08X",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr)));
|
||||
|
||||
/* Prepare to report progress of the redo phase. */
|
||||
if (!StandbyMode)
|
||||
@@ -1758,7 +1758,7 @@ PerformWalRecovery(void)
|
||||
do
|
||||
{
|
||||
if (!StandbyMode)
|
||||
ereport_startup_progress("redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%X",
|
||||
ereport_startup_progress("redo in progress, elapsed time: %ld.%02d s, current LSN: %X/%08X",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr));
|
||||
|
||||
#ifdef WAL_DEBUG
|
||||
@@ -1767,7 +1767,7 @@ PerformWalRecovery(void)
|
||||
StringInfoData buf;
|
||||
|
||||
initStringInfo(&buf);
|
||||
appendStringInfo(&buf, "REDO @ %X/%X; LSN %X/%X: ",
|
||||
appendStringInfo(&buf, "REDO @ %X/%08X; LSN %X/%08X: ",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr),
|
||||
LSN_FORMAT_ARGS(xlogreader->EndRecPtr));
|
||||
xlog_outrec(&buf, xlogreader);
|
||||
@@ -1880,9 +1880,9 @@ PerformWalRecovery(void)
|
||||
RmgrCleanup();
|
||||
|
||||
ereport(LOG,
|
||||
(errmsg("redo done at %X/%X system usage: %s",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr),
|
||||
pg_rusage_show(&ru0))));
|
||||
errmsg("redo done at %X/%08X system usage: %s",
|
||||
LSN_FORMAT_ARGS(xlogreader->ReadRecPtr),
|
||||
pg_rusage_show(&ru0)));
|
||||
xtime = GetLatestXTime();
|
||||
if (xtime)
|
||||
ereport(LOG,
|
||||
@@ -2092,7 +2092,7 @@ xlogrecovery_redo(XLogReaderState *record, TimeLineID replayTLI)
|
||||
|
||||
memcpy(&xlrec, XLogRecGetData(record), sizeof(xl_overwrite_contrecord));
|
||||
if (xlrec.overwritten_lsn != record->overwrittenRecPtr)
|
||||
elog(FATAL, "mismatching overwritten LSN %X/%X -> %X/%X",
|
||||
elog(FATAL, "mismatching overwritten LSN %X/%08X -> %X/%08X",
|
||||
LSN_FORMAT_ARGS(xlrec.overwritten_lsn),
|
||||
LSN_FORMAT_ARGS(record->overwrittenRecPtr));
|
||||
|
||||
@@ -2101,9 +2101,9 @@ xlogrecovery_redo(XLogReaderState *record, TimeLineID replayTLI)
|
||||
missingContrecPtr = InvalidXLogRecPtr;
|
||||
|
||||
ereport(LOG,
|
||||
(errmsg("successfully skipped missing contrecord at %X/%X, overwritten at %s",
|
||||
LSN_FORMAT_ARGS(xlrec.overwritten_lsn),
|
||||
timestamptz_to_str(xlrec.overwrite_time))));
|
||||
errmsg("successfully skipped missing contrecord at %X/%08X, overwritten at %s",
|
||||
LSN_FORMAT_ARGS(xlrec.overwritten_lsn),
|
||||
timestamptz_to_str(xlrec.overwrite_time)));
|
||||
|
||||
/* Verifying the record should only happen once */
|
||||
record->overwrittenRecPtr = InvalidXLogRecPtr;
|
||||
@@ -2129,7 +2129,7 @@ xlogrecovery_redo(XLogReaderState *record, TimeLineID replayTLI)
|
||||
backupEndPoint = lsn;
|
||||
}
|
||||
else
|
||||
elog(DEBUG1, "saw end-of-backup record for backup starting at %X/%X, waiting for %X/%X",
|
||||
elog(DEBUG1, "saw end-of-backup record for backup starting at %X/%08X, waiting for %X/%08X",
|
||||
LSN_FORMAT_ARGS(startpoint), LSN_FORMAT_ARGS(backupStartPoint));
|
||||
}
|
||||
}
|
||||
@@ -2224,9 +2224,9 @@ CheckRecoveryConsistency(void)
|
||||
backupEndRequired = false;
|
||||
|
||||
ereport(LOG,
|
||||
(errmsg("completed backup recovery with redo LSN %X/%X and end LSN %X/%X",
|
||||
LSN_FORMAT_ARGS(saveBackupStartPoint),
|
||||
LSN_FORMAT_ARGS(saveBackupEndPoint))));
|
||||
errmsg("completed backup recovery with redo LSN %X/%08X and end LSN %X/%08X",
|
||||
LSN_FORMAT_ARGS(saveBackupStartPoint),
|
||||
LSN_FORMAT_ARGS(saveBackupEndPoint)));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2255,8 +2255,8 @@ CheckRecoveryConsistency(void)
|
||||
reachedConsistency = true;
|
||||
SendPostmasterSignal(PMSIGNAL_RECOVERY_CONSISTENT);
|
||||
ereport(LOG,
|
||||
(errmsg("consistent recovery state reached at %X/%X",
|
||||
LSN_FORMAT_ARGS(lastReplayedEndRecPtr))));
|
||||
errmsg("consistent recovery state reached at %X/%08X",
|
||||
LSN_FORMAT_ARGS(lastReplayedEndRecPtr)));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2293,7 +2293,7 @@ rm_redo_error_callback(void *arg)
|
||||
xlog_block_info(&buf, record);
|
||||
|
||||
/* translator: %s is a WAL record description */
|
||||
errcontext("WAL redo at %X/%X for %s",
|
||||
errcontext("WAL redo at %X/%08X for %s",
|
||||
LSN_FORMAT_ARGS(record->ReadRecPtr),
|
||||
buf.data);
|
||||
|
||||
@@ -2328,7 +2328,7 @@ xlog_outdesc(StringInfo buf, XLogReaderState *record)
|
||||
static void
|
||||
xlog_outrec(StringInfo buf, XLogReaderState *record)
|
||||
{
|
||||
appendStringInfo(buf, "prev %X/%X; xid %u",
|
||||
appendStringInfo(buf, "prev %X/%08X; xid %u",
|
||||
LSN_FORMAT_ARGS(XLogRecGetPrev(record)),
|
||||
XLogRecGetXid(record));
|
||||
|
||||
@@ -2416,10 +2416,10 @@ checkTimeLineSwitch(XLogRecPtr lsn, TimeLineID newTLI, TimeLineID prevTLI,
|
||||
lsn < minRecoveryPoint &&
|
||||
newTLI > minRecoveryPointTLI)
|
||||
ereport(PANIC,
|
||||
(errmsg("unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u",
|
||||
newTLI,
|
||||
LSN_FORMAT_ARGS(minRecoveryPoint),
|
||||
minRecoveryPointTLI)));
|
||||
errmsg("unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%08X on timeline %u",
|
||||
newTLI,
|
||||
LSN_FORMAT_ARGS(minRecoveryPoint),
|
||||
minRecoveryPointTLI));
|
||||
|
||||
/* Looks good */
|
||||
}
|
||||
@@ -2621,8 +2621,8 @@ recoveryStopsBefore(XLogReaderState *record)
|
||||
recoveryStopTime = 0;
|
||||
recoveryStopName[0] = '\0';
|
||||
ereport(LOG,
|
||||
(errmsg("recovery stopping before WAL location (LSN) \"%X/%X\"",
|
||||
LSN_FORMAT_ARGS(recoveryStopLSN))));
|
||||
errmsg("recovery stopping before WAL location (LSN) \"%X/%08X\"",
|
||||
LSN_FORMAT_ARGS(recoveryStopLSN)));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2789,8 +2789,8 @@ recoveryStopsAfter(XLogReaderState *record)
|
||||
recoveryStopTime = 0;
|
||||
recoveryStopName[0] = '\0';
|
||||
ereport(LOG,
|
||||
(errmsg("recovery stopping after WAL location (LSN) \"%X/%X\"",
|
||||
LSN_FORMAT_ARGS(recoveryStopLSN))));
|
||||
errmsg("recovery stopping after WAL location (LSN) \"%X/%08X\"",
|
||||
LSN_FORMAT_ARGS(recoveryStopLSN)));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2910,7 +2910,7 @@ getRecoveryStopReason(void)
|
||||
timestamptz_to_str(recoveryStopTime));
|
||||
else if (recoveryTarget == RECOVERY_TARGET_LSN)
|
||||
snprintf(reason, sizeof(reason),
|
||||
"%s LSN %X/%X\n",
|
||||
"%s LSN %X/%08X\n",
|
||||
recoveryStopAfter ? "after" : "before",
|
||||
LSN_FORMAT_ARGS(recoveryStopLSN));
|
||||
else if (recoveryTarget == RECOVERY_TARGET_NAME)
|
||||
@@ -3213,11 +3213,11 @@ ReadRecord(XLogPrefetcher *xlogprefetcher, int emode,
|
||||
XLogFileName(fname, xlogreader->seg.ws_tli, segno,
|
||||
wal_segment_size);
|
||||
ereport(emode_for_corrupt_record(emode, xlogreader->EndRecPtr),
|
||||
(errmsg("unexpected timeline ID %u in WAL segment %s, LSN %X/%X, offset %u",
|
||||
xlogreader->latestPageTLI,
|
||||
fname,
|
||||
LSN_FORMAT_ARGS(xlogreader->latestPagePtr),
|
||||
offset)));
|
||||
errmsg("unexpected timeline ID %u in WAL segment %s, LSN %X/%08X, offset %u",
|
||||
xlogreader->latestPageTLI,
|
||||
fname,
|
||||
LSN_FORMAT_ARGS(xlogreader->latestPagePtr),
|
||||
offset));
|
||||
record = NULL;
|
||||
}
|
||||
|
||||
@@ -3429,14 +3429,14 @@ retry:
|
||||
errno = save_errno;
|
||||
ereport(emode_for_corrupt_record(emode, targetPagePtr + reqLen),
|
||||
(errcode_for_file_access(),
|
||||
errmsg("could not read from WAL segment %s, LSN %X/%X, offset %u: %m",
|
||||
errmsg("could not read from WAL segment %s, LSN %X/%08X, offset %u: %m",
|
||||
fname, LSN_FORMAT_ARGS(targetPagePtr),
|
||||
readOff)));
|
||||
}
|
||||
else
|
||||
ereport(emode_for_corrupt_record(emode, targetPagePtr + reqLen),
|
||||
(errcode(ERRCODE_DATA_CORRUPTED),
|
||||
errmsg("could not read from WAL segment %s, LSN %X/%X, offset %u: read %d of %zu",
|
||||
errmsg("could not read from WAL segment %s, LSN %X/%08X, offset %u: read %d of %zu",
|
||||
fname, LSN_FORMAT_ARGS(targetPagePtr),
|
||||
readOff, r, (Size) XLOG_BLCKSZ)));
|
||||
goto next_record_is_invalid;
|
||||
@@ -3718,7 +3718,7 @@ WaitForWALToBecomeAvailable(XLogRecPtr RecPtr, bool randAccess,
|
||||
wait_time = wal_retrieve_retry_interval -
|
||||
TimestampDifferenceMilliseconds(last_fail_time, now);
|
||||
|
||||
elog(LOG, "waiting for WAL to become available at %X/%X",
|
||||
elog(LOG, "waiting for WAL to become available at %X/%08X",
|
||||
LSN_FORMAT_ARGS(RecPtr));
|
||||
|
||||
/* Do background tasks that might benefit us later. */
|
||||
@@ -3864,7 +3864,7 @@ WaitForWALToBecomeAvailable(XLogRecPtr RecPtr, bool randAccess,
|
||||
tli = tliOfPointInHistory(tliRecPtr, expectedTLEs);
|
||||
|
||||
if (curFileTLI > 0 && tli < curFileTLI)
|
||||
elog(ERROR, "according to history file, WAL location %X/%X belongs to timeline %u, but previous recovered WAL file came from timeline %u",
|
||||
elog(ERROR, "according to history file, WAL location %X/%08X belongs to timeline %u, but previous recovered WAL file came from timeline %u",
|
||||
LSN_FORMAT_ARGS(tliRecPtr),
|
||||
tli, curFileTLI);
|
||||
}
|
||||
@@ -4177,10 +4177,10 @@ rescanLatestTimeLine(TimeLineID replayTLI, XLogRecPtr replayLSN)
|
||||
if (currentTle->end < replayLSN)
|
||||
{
|
||||
ereport(LOG,
|
||||
(errmsg("new timeline %u forked off current database system timeline %u before current recovery point %X/%X",
|
||||
newtarget,
|
||||
replayTLI,
|
||||
LSN_FORMAT_ARGS(replayLSN))));
|
||||
errmsg("new timeline %u forked off current database system timeline %u before current recovery point %X/%08X",
|
||||
newtarget,
|
||||
replayTLI,
|
||||
LSN_FORMAT_ARGS(replayLSN)));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user