Bug 51583

Summary: ConnectionPool.close() always waits one second unnecessarily
Product: Tomcat Modules Reporter: Patric Rufflar <patric>
Component: jdbc-poolAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   

Description Patric Rufflar 2011-07-29 08:10:00 UTC
As discussed with Filip via mail: (just to do report it officially):

I've encountered an issue on closing the pool:
Closing a ConnectionPool will always take at least one second if more than zero connections have been acquired.
Please have a look at ConnectionPool.java:367 :

                    con = pool.poll(1000, TimeUnit.MILLISECONDS);

Imagine that we've previously fetched the last connection out of the queue.
In this case the that command will cause that we've to wait 1000ms (to return null).

The solution would be easy - just check prior to polling if the pool queue is empty.

The 1 second wait time is really annoying because I am creating and destroying the pool for each junit test which causes that each test will take more than 2 seconds (I am using two pools per test).
Comment 1 Filip Hanik 2011-08-15 15:19:48 UTC
Fixed in r1157874