Thread: autovacuum vs. createdb

autovacuum vs. createdb

From
Ben
Date:
I'm noticing a problem where autovacuum touching template1 when createdb
is run is making createdb fail. That's easy to work around when doing
things by hand (just run it again), but when running createdb with a
script, it's not so clear to me how to keep things working all the time.

One thought I had was having my script insert rows into pg_autovacuum
temporarily (I assume in template1) but I'm not sure what tables I need to
tell the autovacuum daemon to keep away from. Is that a reasonable idea,
or is there a better one?

Re: autovacuum vs. createdb

From
Tom Lane
Date:
Ben <bench@silentmedia.com> writes:
> I'm noticing a problem where autovacuum touching template1 when createdb
> is run is making createdb fail. That's easy to work around when doing
> things by hand (just run it again), but when running createdb with a
> script, it's not so clear to me how to keep things working all the time.

There's a fix for this in 8.3, but in existing releases about all you
can do is make your script wait a few seconds and retry.

> One thought I had was having my script insert rows into pg_autovacuum
> temporarily (I assume in template1) but I'm not sure what tables I need to
> tell the autovacuum daemon to keep away from.

That seems counterproductive: any churn you make in template1 will mean
that autovacuum actually has something to do there, which you don't
want.

            regards, tom lane

Re: autovacuum vs. createdb

From
Ben
Date:
On Tue, 15 Jan 2008, Tom Lane wrote:

> Ben <bench@silentmedia.com> writes:
>> I'm noticing a problem where autovacuum touching template1 when createdb
>> is run is making createdb fail. That's easy to work around when doing
>> things by hand (just run it again), but when running createdb with a
>> script, it's not so clear to me how to keep things working all the time.
>
> There's a fix for this in 8.3, but in existing releases about all you
> can do is make your script wait a few seconds and retry.

Can I assume createdb return non-zero in this case?