On 05/30/07 10:23, Tom Lane wrote:
> Paul Tilles <Paul.Tilles@noaa.gov> writes:
>> I am wondering if one of the previous executions of psql is doing some
>> "back room" work in the database while allowing the script to continue.
>
> It takes finite time for the backend to quit, and psql doesn't wait
> around for that to happen. I've noticed that on many systems it seems
> that the kernel scheduler actively discriminates against an exiting
> backend --- maybe it thinks it's a low-priority background process?
> The amount of work needed to start a new psql and a new backend
> vastly exceeds what it takes to quit (unless you've got lots of temp
> tables to drop, or some such), and yet people report cases like this
> pretty often.
>
> We could fix it by making PQfinish() wait for the connection to drop,
> but that cure could be worse than the disease; most apps would just
> see this as useless delay.
>
> In the meantime, a sleep(1) or some such before trying to drop a
> recently-used database ought to be a usable workaround.
The proprietary DB that I use at work implemented something similar
as a command-line qualifier, and I guarantee you that it's been
tremendously useful.
--
Ron Johnson, Jr.
Jefferson LA USA
Give a man a fish, and he eats for a day.
Hit him with a fish, and he goes away for good!