Thread: autovacuum vs. createdb
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?
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
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?