Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit f2b604e

Browse files
committed
Add some debugging details to some of the elog(STOP) conditions for WAL.
Standardize on %X/%X as the formatting for XLOG position display --- we had a couple of different formats before, and none of 'em were as useful as hex offsets IMHO.
1 parent c2ed891 commit f2b604e

File tree

1 file changed

+28
-23
lines changed
  • src/backend/access/transam

1 file changed

+28
-23
lines changed

src/backend/access/transam/xlog.c

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.75 2001/08/25 18:52:41 tgl Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.76 2001/09/06 02:02:48 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -760,7 +760,7 @@ begin:;
760760
{
761761
char buf[8192];
762762

763-
sprintf(buf, "INSERT @ %u/%u: ", RecPtr.xlogid, RecPtr.xrecoff);
763+
sprintf(buf, "INSERT @ %X/%X: ", RecPtr.xlogid, RecPtr.xrecoff);
764764
xlog_outrec(buf, record);
765765
if (rdata->data != NULL)
766766
{
@@ -1012,7 +1012,10 @@ XLogWrite(XLogwrtRqst WriteRqst)
10121012
* AdvanceXLInsertBuffer.
10131013
*/
10141014
if (!XLByteLT(LogwrtResult.Write, XLogCtl->xlblocks[Write->curridx]))
1015-
elog(STOP, "XLogWrite: write request is past end of log");
1015+
elog(STOP, "XLogWrite: write request %X/%X is past end of log %X/%X",
1016+
LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
1017+
XLogCtl->xlblocks[Write->curridx].xlogid,
1018+
XLogCtl->xlblocks[Write->curridx].xrecoff);
10161019

10171020
/* Advance LogwrtResult.Write to end of current buffer page */
10181021
LogwrtResult.Write = XLogCtl->xlblocks[Write->curridx];
@@ -1190,7 +1193,7 @@ XLogFlush(XLogRecPtr record)
11901193

11911194
if (XLOG_DEBUG)
11921195
{
1193-
elog(DEBUG, "XLogFlush%s%s: request %u/%u; write %u/%u; flush %u/%u\n",
1196+
elog(DEBUG, "XLogFlush%s%s: request %X/%X; write %X/%X; flush %X/%X\n",
11941197
(IsBootstrapProcessingMode()) ? "(bootstrap)" : "",
11951198
(InRedo) ? "(redo)" : "",
11961199
record.xlogid, record.xrecoff,
@@ -1266,7 +1269,9 @@ XLogFlush(XLogRecPtr record)
12661269
XLogWrite(WriteRqst);
12671270
S_UNLOCK(&(XLogCtl->logwrt_lck));
12681271
if (XLByteLT(LogwrtResult.Flush, record))
1269-
elog(STOP, "XLogFlush: request is not satisfied");
1272+
elog(STOP, "XLogFlush: request %X/%X is not satisfied --- flushed only to %X/%X",
1273+
record.xlogid, record.xrecoff,
1274+
LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
12701275
break;
12711276
}
12721277
S_LOCK_SLEEP(&(XLogCtl->logwrt_lck), spins++, XLOG_LOCK_TIMEOUT);
@@ -1688,7 +1693,7 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr, int emode)
16881693

16891694
if (!EQ_CRC64(record->xl_crc, crc))
16901695
{
1691-
elog(emode, "ReadRecord: bad resource manager data checksum in record at %u/%u",
1696+
elog(emode, "ReadRecord: bad resource manager data checksum in record at %X/%X",
16921697
recptr.xlogid, recptr.xrecoff);
16931698
return (false);
16941699
}
@@ -1710,7 +1715,7 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr, int emode)
17101715

17111716
if (!EQ_CRC64(cbuf, crc))
17121717
{
1713-
elog(emode, "ReadRecord: bad checksum of backup block %d in record at %u/%u",
1718+
elog(emode, "ReadRecord: bad checksum of backup block %d in record at %X/%X",
17141719
i + 1, recptr.xlogid, recptr.xrecoff);
17151720
return (false);
17161721
}
@@ -1780,7 +1785,7 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, char *buffer)
17801785
tmpRecPtr.xrecoff += SizeOfXLogPHD;
17811786
}
17821787
else if (!XRecOffIsValid(RecPtr->xrecoff))
1783-
elog(STOP, "ReadRecord: invalid record offset at (%u, %u)",
1788+
elog(STOP, "ReadRecord: invalid record offset at %X/%X",
17841789
RecPtr->xlogid, RecPtr->xrecoff);
17851790

17861791
if (readFile >= 0 && !XLByteInSeg(*RecPtr, readId, readSeg))
@@ -1819,7 +1824,7 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, char *buffer)
18191824
if ((((XLogPageHeader) readBuf)->xlp_info & XLP_FIRST_IS_CONTRECORD) &&
18201825
RecPtr->xrecoff % BLCKSZ == SizeOfXLogPHD)
18211826
{
1822-
elog(emode, "ReadRecord: contrecord is requested by (%u, %u)",
1827+
elog(emode, "ReadRecord: contrecord is requested by %X/%X",
18231828
RecPtr->xlogid, RecPtr->xrecoff);
18241829
goto next_record_is_invalid;
18251830
}
@@ -1833,7 +1838,7 @@ got_record:;
18331838
*/
18341839
if (record->xl_len == 0)
18351840
{
1836-
elog(emode, "ReadRecord: record with zero length at (%u, %u)",
1841+
elog(emode, "ReadRecord: record with zero length at %X/%X",
18371842
RecPtr->xlogid, RecPtr->xrecoff);
18381843
goto next_record_is_invalid;
18391844
}
@@ -1857,13 +1862,13 @@ got_record:;
18571862
*/
18581863
if (total_len > _INTL_MAXLOGRECSZ)
18591864
{
1860-
elog(emode, "ReadRecord: record length %u at (%u, %u) too long",
1865+
elog(emode, "ReadRecord: record length %u at %X/%X too long",
18611866
total_len, RecPtr->xlogid, RecPtr->xrecoff);
18621867
goto next_record_is_invalid;
18631868
}
18641869
if (record->xl_rmid > RM_MAX_ID)
18651870
{
1866-
elog(emode, "ReadRecord: invalid resource manager id %u at (%u, %u)",
1871+
elog(emode, "ReadRecord: invalid resource manager id %u at %X/%X",
18671872
record->xl_rmid, RecPtr->xlogid, RecPtr->xrecoff);
18681873
goto next_record_is_invalid;
18691874
}
@@ -1987,7 +1992,7 @@ ValidXLOGHeader(XLogPageHeader hdr, int emode, bool checkSUI)
19871992
recaddr.xrecoff = readSeg * XLogSegSize + readOff;
19881993
if (!XLByteEQ(hdr->xlp_pageaddr, recaddr))
19891994
{
1990-
elog(emode, "ReadRecord: unexpected pageaddr (%u, %u) in log file %u, segment %u, offset %u",
1995+
elog(emode, "ReadRecord: unexpected pageaddr %X/%X in log file %u, segment %u, offset %u",
19911996
hdr->xlp_pageaddr.xlogid, hdr->xlp_pageaddr.xrecoff,
19921997
readId, readSeg, readOff);
19931998
return false;
@@ -2486,7 +2491,7 @@ StartupXLOG(void)
24862491
if (record != NULL)
24872492
{
24882493
checkPointLoc = ControlFile->checkPoint;
2489-
elog(LOG, "checkpoint record is at (%u, %u)",
2494+
elog(LOG, "checkpoint record is at %X/%X",
24902495
checkPointLoc.xlogid, checkPointLoc.xrecoff);
24912496
}
24922497
else
@@ -2495,7 +2500,7 @@ StartupXLOG(void)
24952500
if (record != NULL)
24962501
{
24972502
checkPointLoc = ControlFile->prevCheckPoint;
2498-
elog(LOG, "using previous checkpoint record at (%u, %u)",
2503+
elog(LOG, "using previous checkpoint record at %X/%X",
24992504
checkPointLoc.xlogid, checkPointLoc.xrecoff);
25002505
InRecovery = true; /* force recovery even if SHUTDOWNED */
25012506
}
@@ -2506,7 +2511,7 @@ StartupXLOG(void)
25062511
memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
25072512
wasShutdown = (record->xl_info == XLOG_CHECKPOINT_SHUTDOWN);
25082513

2509-
elog(LOG, "redo record is at (%u, %u); undo record is at (%u, %u); shutdown %s",
2514+
elog(LOG, "redo record is at %X/%X; undo record is at %X/%X; shutdown %s",
25102515
checkPoint.redo.xlogid, checkPoint.redo.xrecoff,
25112516
checkPoint.undo.xlogid, checkPoint.undo.xrecoff,
25122517
wasShutdown ? "TRUE" : "FALSE");
@@ -2561,7 +2566,7 @@ StartupXLOG(void)
25612566
if (record != NULL)
25622567
{
25632568
InRedo = true;
2564-
elog(LOG, "redo starts at (%u, %u)",
2569+
elog(LOG, "redo starts at %X/%X",
25652570
ReadRecPtr.xlogid, ReadRecPtr.xrecoff);
25662571
do
25672572
{
@@ -2576,7 +2581,7 @@ StartupXLOG(void)
25762581
{
25772582
char buf[8192];
25782583

2579-
sprintf(buf, "REDO @ %u/%u; LSN %u/%u: ",
2584+
sprintf(buf, "REDO @ %X/%X; LSN %X/%X: ",
25802585
ReadRecPtr.xlogid, ReadRecPtr.xrecoff,
25812586
EndRecPtr.xlogid, EndRecPtr.xrecoff);
25822587
xlog_outrec(buf, record);
@@ -2592,7 +2597,7 @@ StartupXLOG(void)
25922597
RmgrTable[record->xl_rmid].rm_redo(EndRecPtr, record);
25932598
record = ReadRecord(NULL, LOG, buffer);
25942599
} while (record != NULL);
2595-
elog(LOG, "redo done at (%u, %u)",
2600+
elog(LOG, "redo done at %X/%X",
25962601
ReadRecPtr.xlogid, ReadRecPtr.xrecoff);
25972602
LastRec = ReadRecPtr;
25982603
InRedo = false;
@@ -2681,7 +2686,7 @@ StartupXLOG(void)
26812686
RecPtr = ReadRecPtr;
26822687
if (XLByteLT(checkPoint.undo, RecPtr))
26832688
{
2684-
elog(LOG, "undo starts at (%u, %u)",
2689+
elog(LOG, "undo starts at %X/%X",
26852690
RecPtr.xlogid, RecPtr.xrecoff);
26862691
do
26872692
{
@@ -2691,7 +2696,7 @@ StartupXLOG(void)
26912696
RmgrTable[record->xl_rmid].rm_undo(EndRecPtr, record);
26922697
RecPtr = record->xl_prev;
26932698
} while (XLByteLE(checkPoint.undo, RecPtr));
2694-
elog(LOG, "undo done at (%u, %u)",
2699+
elog(LOG, "undo done at %X/%X",
26952700
ReadRecPtr.xlogid, ReadRecPtr.xrecoff);
26962701
}
26972702
else
@@ -3144,7 +3149,7 @@ xlog_desc(char *buf, uint8 xl_info, char *rec)
31443149
{
31453150
CheckPoint *checkpoint = (CheckPoint *) rec;
31463151

3147-
sprintf(buf + strlen(buf), "checkpoint: redo %u/%u; undo %u/%u; "
3152+
sprintf(buf + strlen(buf), "checkpoint: redo %X/%X; undo %X/%X; "
31483153
"sui %u; xid %u; oid %u; %s",
31493154
checkpoint->redo.xlogid, checkpoint->redo.xrecoff,
31503155
checkpoint->undo.xlogid, checkpoint->undo.xrecoff,
@@ -3169,7 +3174,7 @@ xlog_outrec(char *buf, XLogRecord *record)
31693174
int bkpb;
31703175
int i;
31713176

3172-
sprintf(buf + strlen(buf), "prev %u/%u; xprev %u/%u; xid %u",
3177+
sprintf(buf + strlen(buf), "prev %X/%X; xprev %X/%X; xid %u",
31733178
record->xl_prev.xlogid, record->xl_prev.xrecoff,
31743179
record->xl_xact_prev.xlogid, record->xl_xact_prev.xrecoff,
31753180
record->xl_xid);

0 commit comments

Comments
 (0)