Re: PITR COPY Failure (was Point in Time Recovery) - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: PITR COPY Failure (was Point in Time Recovery)
Date
Msg-id 1090329086.28049.2708.camel@stromboli
Whole thread Raw
In response to Re: PITR COPY Failure (was Point in Time Recovery)  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: PITR COPY Failure (was Point in Time Recovery)
Re: PITR COPY Failure (was Point in Time Recovery)
List pgsql-hackers
On Tue, 2004-07-20 at 13:51, Tom Lane wrote:
> Simon Riggs <simon@2ndquadrant.com> writes:
> >> The quick and dirty solution would be to dike out the safety check at
> >> 4268ff.  
> 
> > If you take out that check, we still fail because the wasted space at
> > the end is causing a "record with zero length" error.
> 
> Ugh.  I'm beginning to think we ought to revert the patch that added the
> don't-split-across-files logic to XLogInsert; that seems to have broken
> more assumptions than I realized.  That was added here:
> 
> 2004-02-11 17:55  tgl
> 
>     * src/: backend/access/transam/xact.c,
>     backend/access/transam/xlog.c, backend/access/transam/xlogutils.c,
>     backend/storage/smgr/md.c, backend/storage/smgr/smgr.c,
>     bin/pg_controldata/pg_controldata.c,
>     bin/pg_resetxlog/pg_resetxlog.c, include/access/xact.h,
>     include/access/xlog.h, include/access/xlogutils.h,
>     include/pg_config_manual.h, include/catalog/pg_control.h,
>     include/storage/smgr.h: Commit the reasonably uncontroversial parts
>     of J.R. Nield's PITR patch, to wit: Add a header record to each WAL
>     segment file so that it can be reliably identified.  Avoid
>     splitting WAL records across segment files (this is not strictly
>     necessary, but makes it simpler to incorporate the header records).
>      Make WAL entries for file creation, deletion, and truncation (as
>     foreseen but never implemented by Vadim).  Also, add support for
>     making XLOG_SEG_SIZE configurable at compile time, similarly to
>     BLCKSZ.  Fix a couple bugs I introduced in WAL replay during recent
>     smgr API changes.  initdb is forced due to changes in pg_control
>     contents.
> 
> There are other ways to do this, for example we could treat the WAL page
> headers as variable-size, and stick the file labeling info into the
> first page's header instead of making it be a separate record.  The
> separate-record way makes it easier to incorporate future additions to
> the file labeling info, but I don't really think it's critical to allow
> for that.
> 

I think I've fixed it now...but wait 20

The problem was that a zero length XLOG_WASTED_SPACE record just fell
out of ReadRecord when it shouldn't have. By giving it a helping hand it
makes it through with pointers correctly set, and everything else was
already thought of in the earlier patch, so xlog_redo etc happens.

I'll update again in a few minutes....no point us both looking at this.

Best regards, Simon Riggs





pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: PITR COPY Failure (was Point in Time Recovery)
Next
From: Andrew Dunstan
Date:
Subject: Re: localhost redux