/*
* openLogFile is -1 or a kernel FD for an open log file segment.
- * openLogSegNo identifies the segment. These variables are only used to
- * write the XLOG, and so will normally refer to the active segment.
+ * openLogSegNo identifies the segment, and openLogTLI the corresponding TLI.
+ * These variables are only used to write the XLOG, and so will normally refer
+ * to the active segment.
+ *
* Note: call Reserve/ReleaseExternalFD to track consumption of this FD.
*/
static int openLogFile = -1;
static XLogSegNo openLogSegNo = 0;
+static TimeLineID openLogTLI = 0;
/*
* These variables are used similarly to the ones above, but for reading
XLogFileClose();
XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo,
wal_segment_size);
+ openLogTLI = tli;
/* create/use new log file */
openLogFile = XLogFileInit(openLogSegNo, tli);
{
XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo,
wal_segment_size);
+ openLogTLI = tli;
openLogFile = XLogFileOpen(openLogSegNo, tli);
ReserveExternalFD();
}
{
XLByteToPrevSeg(LogwrtResult.Write, openLogSegNo,
wal_segment_size);
+ openLogTLI = tli;
openLogFile = XLogFileOpen(openLogSegNo, tli);
ReserveExternalFD();
}
char xlogfname[MAXFNAMELEN];
int save_errno = errno;
- XLogFileName(xlogfname, ThisTimeLineID, openLogSegNo, wal_segment_size);
+ XLogFileName(xlogfname, openLogTLI, openLogSegNo, wal_segment_size);
errno = save_errno;
ereport(PANIC,
(errcode_for_file_access(),
record->xl_crc = crc;
/* Create first XLOG segment file */
+ openLogTLI = ThisTimeLineID;
openLogFile = XLogFileInit(1, ThisTimeLineID);
/*
int save_errno;
save_errno = errno;
- XLogFileName(xlogfname, ThisTimeLineID, openLogSegNo,
+ XLogFileName(xlogfname, openLogTLI, openLogSegNo,
wal_segment_size);
errno = save_errno;
ereport(PANIC,