> I do not believe there is any fundamentally sound algorithm that a
> connection pool can use to detect when a connection has truly been
> "abandoned" and is thereby suitable for recovery.

If we did not have a pool, the server would eventually (a) run out of
connections, possibly impacting other applications in the system and/or (b)
timeout excessively old connections.  Those timeouts are generally very
long.  The default in MySQL is 8 hours.

The question to ask is the purpose of a connection pool.  If it is to
improve performance, then it has a set of jobs.  Changing the
characteristics of the preceeding paragraph are not included in that set of
jobs.

Where people want a connection pool to recover abandoned connections, that
usually points to either poor programming within a particular application,
or sharing by multiple application components, one of which may have a
problem.  Essentially, they want to shorten the server timeout, so that
other components can't deny service by losing track of connections.

Do you concur with this analysis?

> It's really sad that people writing database driven software using a
> connection pool don't seem to be aware of how trivially simple it is to
> make sure that connection leaks do not happen to them, using a
> try/catch/finally block to ensure that the release always happens.

I agree.  The code that I use is even more that what you posted, so much so
that it led me to develop a functor-type approach for our internal use,
where I provide the normative database operation(s) that we want performed,
and the core library manages the rest.

        --- Noel


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to