Re: warm standby server stops doing checkpoints afterawhile - Mailing list pgsql-general

From Simon Riggs
Subject Re: warm standby server stops doing checkpoints afterawhile
Date
Msg-id 1180698271.26297.117.camel@silverbirch.site
Whole thread Raw
In response to Re: warm standby server stops doing checkpoints after awhile  (Frank Wittig <fw@weisshuhn.de>)
Responses Re: warm standby server stops doing checkpoints afterawhile  (Teodor Sigaev <teodor@sigaev.ru>)
List pgsql-general
On Fri, 2007-06-01 at 13:33 +0200, Frank Wittig wrote:
> Simon Riggs schrieb:
>
> > This is repeatable, yes?
> Yes, it occures every time I begin with a new base backup. And it seem
> to happen during recreation of tsearch2 vectors of large amounts of data
> sets.
>
> > Has anything crashed on your server?
> No. Crashes didn't occur duriung that times.
>
> > Are you using GIN or GIST indexes?
> I'm using GIN indesex on tsearch2 vectors of very large ammount of data
> sets. (About 3,8 million data sets of which about 30-50 thousands are
> recreated and indexed when the descibed behavior occures.)
>
> > I'll look at putting some debug information in there that logs whether
> > multi-WAL actions remain unresolved for any length of time.
> Extra debug info would be great.
> I tested myself adding some debug output into the function Tom Lane
> mentioned and found that after the server stopped checkpointing every
> time the function is called it exits at this point:
>
>   /*
>    * Is it safe to checkpoint?  We must ask each of the resource managers
>    * whether they have any partial state information that might prevent a
>    * correct restart from this point.  If so, we skip this opportunity, but
>    * return at the next checkpoint record for another try.
>    */
>   for (rmid = 0; rmid <= RM_MAX_ID; rmid++)
>   {
>     if (RmgrTable[rmid].rm_safe_restartpoint != NULL)
>       if (!(RmgrTable[rmid].rm_safe_restartpoint()))
>         return;
>   }
>
> It exits every time with the same value for rmid.
> Logs look like this (The quoted lines repeat):
>
> <2007-06-01 13:10:28.936 CEST:%> DEBUG:  00000: executing restore
> command "/var/lib/pgsql/restore.pl
> /mnt/wal_archive/00000001000000C9000000C2 pg_xlog/RECOVERYXLOG"
> <2007-06-01 13:10:28.936 CEST:%> LOCATION:  RestoreArchivedFile, xlog.c:2474
> <2007-06-01 13:11:29.055 CEST:%> LOG:  00000: restored log file
> "00000001000000C9000000C2" from archive
> <2007-06-01 13:11:29.055 CEST:%> LOCATION:  RestoreArchivedFile, xlog.c:2504
> <2007-06-01 13:11:29.364 CEST:%> DEBUG:  00000: found Checkpoint in XLOG
> <2007-06-01 13:11:29.364 CEST:%> CONTEXT:  xlog redo checkpoint: redo
> C9/C20DE050; undo 0/0; tli 1; xid 0/36130541; oid 241990328; multi 8;
> offset 15; online
> <2007-06-01 13:11:29.364 CEST:%> LOCATION:  RecoveryRestartPoint,
> xlog.c:5739
> <2007-06-01 13:11:29.365 CEST:%> DEBUG:  00000: Ressource manager (13)
> has partial state information
> <2007-06-01 13:11:29.365 CEST:%> CONTEXT:  xlog redo checkpoint: redo
> C9/C20DE050; undo 0/0; tli 1; xid 0/36130541; oid 241990328; multi 8;
> offset 15; online
> <2007-06-01 13:11:29.365 CEST:%> LOCATION:  RecoveryRestartPoint,
> xlog.c:5769

To me, this points clearly to there being an improperly completed action
in resource manager 13. (GIN) In summary, it appears that there may be
an issue with the GIN code for WAL recovery and this is effecting the
Warm Standby.

I'll reply again soon with a patch to allow data of incomplete splits to
be logged so we can see what's going on. After that we should continue
to discuss this on -hackers.

--
  Simon Riggs
  EnterpriseDB   http://www.enterprisedb.com



pgsql-general by date:

Previous
From: "Pavel Stehule"
Date:
Subject: Re: how to use array with "holes" ?
Next
From: Dudás József
Date:
Subject: Re: invalid memory alloc after insert with c trigger function