Tom Lane wrote:
> I wrote:
> > Heikki Linnakangas <heikki@enterprisedb.com> writes:
> >> statement_timeout interrupts seem to go through the PG_CATCH-block and
> >> clean up the entry from the vacuum cycle array as they should. But a
> >> SIGINT leading to a "terminating connection due to administrator
> >> command" error does not.
>
> > Hm, that's an interesting thought, but there are no "terminating
> > connection" messages in Shuttleworth's logs either. So we still lack
> > the right idea there. (BTW it would be SIGTERM not SIGINT.)
>
> Hold it ... stop the presses ... the reason we saw no "terminating
> connection" messages was he was grepping his logs for lines containing
> ERROR. Once we look for FATAL too, there are a pile of 'em. I'm not
> 100% convinced that any are from autovacuum processes, but clearly
> *something* is throwing SIGTERM around with abandon in his test
> environment. So at this point your theory above looks like a plausible
> mechanism for the vacuum cycle array to slowly fill up and eventually
> make _bt_start_vacuum fail (or, perhaps, fail sooner than that due to
> a repeat vacuum attempt).
Hmmm, remember that DatabaseCancelAutovacuumActivity is called on CREATE
DATABASE; but what it does is send SIGINT, not SIGTERM. Also, it's not
in 8.2. SIGINT does terminate the autovac process however.
I haven't read the whole problem report completely, so I'm not sure this
has something to do or not.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.