Re: Log notice that checkpoint is to be written on shutdown - Mailing list pgsql-hackers

From Michael Banck
Subject Re: Log notice that checkpoint is to be written on shutdown
Date
Msg-id 1412445756.5984.43.camel@hartree.muc.credativ.lan
Whole thread Raw
In response to Re: Log notice that checkpoint is to be written on shutdown  (Alvaro Herrera <alvherre@2ndquadrant.com>)
List pgsql-hackers
Am Freitag, den 03.10.2014, 12:07 -0300 schrieb Alvaro Herrera:
> Michael Banck wrote:
> > diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
> > index 5a4dbb9..f2716ae 100644
> > --- a/src/backend/access/transam/xlog.c
> > +++ b/src/backend/access/transam/xlog.c
> > @@ -8085,10 +8085,14 @@ CreateCheckPoint(int flags)
> >  
> >      /*
> >       * If enabled, log checkpoint start.  We postpone this until now so as not
> > -     * to log anything if we decided to skip the checkpoint.
> > +     * to log anything if we decided to skip the checkpoint.  If we are during
> > +     * shutdown and checkpoints are not being logged, add a log message that a 
> > +     * checkpoint is to be written and shutdown is potentially delayed.
> >       */
> >      if (log_checkpoints)
> >          LogCheckpointStart(flags, false);
> > +    else if (shutdown)
> > +        ereport(LOG, (errmsg("waiting for checkpoint ...")));
> >  
> >      TRACE_POSTGRESQL_CHECKPOINT_START(flags);
> 
> I think if we're going to emit log messages for shutdown checkpoints, we
> ought to use the same format we already have, i.e. instead of having the
> separate "waiting for checkpoint" message, just test "log_checkpoints ||
> shutdown", then LogCheckpointStart.  

I considered this at first, but the rationale is that if somebody sets
log_checkpoints = off, they probably don't want the actual checkpoint to
be logged, so just a note that a checkpoint is happening was better
(Christoph Berg pointed this out).  If there is consensus that forcing
this one-time checkpoint logging is fine, I can change the patch
accordingly.

> And for consistency also make sure
> that the checkpoint end log line is also reported on shutdown
> checkpoints regardless of log_checkpoints.

I did this in an earlier draft of the patch, but AIUI this either
requires some refactoring to not evaluate log_checkpoints inside
LogCheckpointEnd(), and/or to change the function signature of
LogCheckpointEnd() to include either the `flags' bitfield or the
`shutdown' bool in order to force logging of the finished checkpoint
even if log_checkpoints is set to `off'.


Cheers,

Michael

-- 
Michael Banck
Projektleiter / Berater
Tel.: +49 (2161) 4643-171
Fax:  +49 (2161) 4643-100
Email: michael.banck@credativ.de

credativ GmbH, HRB Mönchengladbach 12080
USt-ID-Nummer: DE204566209
Hohenzollernstr. 133, 41061 Mönchengladbach
Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer




pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Fixed xloginsert_locks for 9.4
Next
From: Jeff Janes
Date:
Subject: Re: Log notice that checkpoint is to be written on shutdown