Skip site navigation (1) Skip section navigation (2)

Re: can't stop autovacuum by HUP'ing the server

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: can't stop autovacuum by HUP'ing the server
Date: 2008-08-26 14:56:13
Message-ID: 20080826145613.GD4920@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-hackers
Dave Cramer wrote:
> On Tue, Aug 26, 2008 at 9:59 AM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:
> 
> > On Tue, Aug 26, 2008 at 9:37 AM, Alvaro Herrera <
> > alvherre(at)commandprompt(dot)com> wrote:

> >> Certainly not, and that's not what I see here either.  I assume process
> >> 25407 is (was) the postmaster, yes?
> >>
> >> If you "show autovacuum", is it on?
> >
> > Yes that was the postmaster, and I did check to see if autovacuum was on,
> > and it was not.
> >
> So where do we go from here ?

The only possible explanation for this behavior is that somebody is
signalling the postmaster due to Xid wraparound issues.  This is keyed
on some GUC vars -- Perhaps you have autovacuum_freeze_max_age set to an
insane value?

varsup.c line 246
    /*  
     * We'll start trying to force autovacuums when oldest_datfrozenxid gets
     * to be more than autovacuum_freeze_max_age transactions old.
     *      
     * Note: guc.c ensures that autovacuum_freeze_max_age is in a sane range,
     * so that xidVacLimit will be well before xidWarnLimit.
     *  
     * [...]
     */     
    xidVacLimit = oldest_datfrozenxid + autovacuum_freeze_max_age;

    ...

    if (TransactionIdFollowsOrEquals(curXid, xidVacLimit) &&
        IsUnderPostmaster)
        SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER);



However, I think that in allowed configurations you should also receive
these warnings:

    /* Give an immediate warning if past the wrap warn point */
    if (TransactionIdFollowsOrEquals(curXid, xidWarnLimit))
        ereport(WARNING,
           (errmsg("database \"%s\" must be vacuumed within %u transactions",
                   NameStr(*oldest_datname),
                   xidWrapLimit - curXid),
            errhint("To avoid a database shutdown, execute a full-database VACUUM in \"%s\".",
                    NameStr(*oldest_datname))));


-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

pgsql-hackers by date

Next:From: Dave CramerDate: 2008-08-26 15:28:03
Subject: Re: can't stop autovacuum by HUP'ing the server
Previous:From: Dave CramerDate: 2008-08-26 14:31:31
Subject: Re: can't stop autovacuum by HUP'ing the server

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group