com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection has a questionable catch-all statement at line 530. It translates all exceptions to instances of SQLException, including InterruptedException that may be thrown by com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource.
This has the effect that a thread interruption may go unnoticed in code that is using c3p0. In a thread using c3p0 it should be safe to assume that the thread will catch an InterruptedException if it's interrupted. The translation of InterruptedException to SQLException obscures the original message carried by the exception (i.e. that the thread was interrupted).
This was noticed in version c3p0-0.9.1.
Reported by: juhani.hietikko AT ekahau.com