> I presume the point of this code was that if we recover and 
> then suffer
> a later crash at a point where we've just written an xlog record that
> exactly fills an xlog page, a subsequent scan of the log 
> might continue
> on from that point and pick up xlog records from the prior (failed)
> system run.  Is there a way to guard against that scenario without
> having to zero out data during recovery?
> 
> One thought that comes to mind is to store StartUpID in XLOG page
> headers, and abort log scanning if we come to a page with StartUpID
> less than what came before.  Is that secure/sufficient?  Is there
> a better way?

This code was from the old days when there was no CRC in log records.
Should we try to read log up to the *physical end* - ie end of last
log file - regardless invalid CRC-s/zero pages with attempt to
re-apply interim valid records? (Or do we already do this?)
This way we'll know where is actual end of log (last valid record)
to begin production from there. (Unfortunately, we'll have to read
empty files pre-created by checkpointer -:().
Anyway I like idea of StartUpID in page headers - this will help
if some log files disappeared. Should we add CRC to page header?
Hm, maybe XLogFileInit should initialize files with StartUpID & CRC
in pages? We would avoid reading empty files.

Vadim

Mon, 12 Mar 2001 20:24:26 -0800
"Mikheev, Vadim" <vmikheev@SECTORBASE.COM>
RE: xlog loose ends, continued
"Mikheev, Vadim" <vmikheev@SECTORBASE.COM> writes:
> This code was from the old days when there was no CRC in log records.

Ah, right.  The CRC makes things safer ... but there's still a risk
that old log pages could look like a valid continuation.

> Should we try to read log up to the *physical end* - ie end of last
> log file - regardless invalid CRC-s/zero pages with attempt to
> re-apply interim valid records? (Or do we already do this?)

That doesn't seem like a good idea --- once we fail to read an XLOG
record, it's probably best to stop there rather than continue on.
I think we want to try for a consistent recovery to a past point in
time (ie, wherever the xlog gap is) not a partial recovery to a later
time.

> Anyway I like idea of StartUpID in page headers - this will help
> if some log files disappeared. Should we add CRC to page header?

That seems like overkill.  I was hoping to keep the page header overhead
at eight bytes.  We could do that either by storing just the two LSBs
of StartUpID (and doing the sequence checking mod 64k) or by reducing
the magic number to two bytes so there's room for four bytes of
StartUpID.  I think I like the first alternative better --- comments?

> Hm, maybe XLogFileInit should initialize files with StartUpID & CRC
> in pages? We would avoid reading empty files.

We already stop when we hit a zeroed page (because it's not got the
right magic number).  That seems sufficient.

			regards, tom lane

Mon, 12 Mar 2001 23:41:02 -0500
Tom Lane <tgl@sss.pgh.pa.us>
Re: xlog loose ends, continued 