On Fri, 2006-05-19 at 17:27 +0100, Simon Riggs wrote:
> On Fri, 2006-05-19 at 12:03 -0400, Tom Lane wrote:
> > Simon Riggs <simon@2ndquadrant.com> writes:
> > > OK, I'm on it.
> >
> > What solution have you got in mind? I was thinking about an fcntl lock
> > to ensure only one archiver is active in a given data directory. That
> > would fix the problem without affecting anything outside the archiver.
> > Not sure what's the most portable way to do it though.
>
> I was trying to think of a better way than using an archiver.pid file in
> pg_xlog/archive_status...
Yesterday I posted to -patches with a new archiver.pid interlock
mechanism. This will prevent server startup when the archiver is first
activated, but once running will clean up and restart again.
This doesn't quite get to the nub of the problem: archiver is designed
to keep archiving files, even in the event that the postmaster explodes.
It will keep archiving until they're all gone.
My recent patch will prevent server startup, so if you do a fast restart
to bounce the server and change parameters you'll have to keep the
server down while the archiver completes (or you kill it).
The archiver's Spartan diligence is great if postmaster does fail, but
archiver can't tell the difference between a normal shutdown and a
postmaster crash. If the postmaster sent a SIGUSR2 on normal shutdown,
we would be able to interrupt the outer loop and shutdown much faster. A
starting postmaster might then reasonably wait a little while for the
old archiver to quit before starting the new one.
What do you think?
-- Simon Riggs EnterpriseDB http://www.enterprisedb.com