Line 150 of org.apache.tomcat.jdbc.pool.FairBlockingQueue can throw InterruptedException, which should be handled by:
catch (InterruptedException e) { lock.lock(); waiters.remove(c); // prevent future threads from offering to this thread, since we are about to die lock.unlock(); if (c.getCount() == 0) { // was given a connection between // when the exception was thrown we acquired // the lock. This seems unlikely, so we are // happy to have let go of the lock and re-acquire // if necessary lock.lock(); items.addFirst(c.getItem()); // return to the head of the queue, as per policy in offer() lock.unlock(); } } You're welcome. cf http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/FairBlockingQueue.java?revision=1432842&view=markup public E poll(long timeout, TimeUnit unit) throws InterruptedException { 135 E result = null; 136 final ReentrantLock lock = this.lock; 137 try { 138 //acquire the global lock until we know what to do 139 lock.lock(); 140 //check to see if we have objects 141 result = items.poll(); 142 if (result==null && timeout>0) { 143 //the queue is empty we will wait for an object 144 ExchangeCountDownLatch<E> c = new ExchangeCountDownLatch<>(1); 145 //add to the bottom of the wait list 146 waiters.addLast(c); 147 //unlock the global lock 148 lock.unlock(); 149 //wait for the specified timeout 150 if (!c.await(timeout, unit)) { 151 //if we timed out, remove ourselves from the waitlist 152 lock.lock(); 153 waiters.remove(c); 154 lock.unlock(); 155 } 156 //return the item we received, can be null if we timed out 157 result = c.getItem(); 158 } else { 159 //we have an object, release 160 lock.unlock(); 161 } 162 } finally { 163 if (lock.isHeldByCurrentThread()) { 164 lock.unlock(); 165 } 166 } 167 return result; 168 } David Bullock Machaira Enterprises Pty Ltd PO Box 31 Canowindra NSW 2804 02 6344 1100 http://machaira.com.au/ On 21 November 2013 04:58, Christopher Schultz <ch...@christopherschultz.net> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > Marko, > > On 11/20/13, 12:07 PM, marko lugarič wrote: >> I have repeated the test with logAbandoned set to "true" and left >> it half hour after pool is empty. There are a lot of exceptions >> (Pool empty. Unable to fetch a connection in 15 seconds and Pool >> wait interrupted) but i don't know what exactly to search (search >> with Abandoned did not produce anything). I have already tried >> using StatementFinalizer interceptor but it did not do anything to >> prevent pool from being empty. > > Can you work-up a simple testcase webapp and load test to reproduce > this problem? If so, please file a bug against tomcat-pool in Bugzilla > and attach the simple webapp and test harness. > > - -chris > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.15 (Darwin) > Comment: GPGTools - http://gpgtools.org > Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ > > iQIcBAEBCAAGBQJSjPhBAAoJEBzwKT+lPKRYQxIQAMHi+9z9jCbzulHiXns/Mt3p > J6w6K6nFCbDOgj7noYfwGf2eBINPQ77ywhF56pzBgn6v2wXWG21NRXTLfHxJJM/s > i1Ol9qp9mEUz3gmcumHbXU+RBBn1CbSh6D8cdVZDsX6tGF4BuzNtseZ0PRq7ZI5A > fi6dyPA5sZf1skfHIOBhmWT7VB7UGud03YmxnKhe3e7N2ZtDN2AJYNhU0haSHd1m > 1DGlCYxmMlK5mbqRA3RGWFTrnDmEvhBnSTLJaLywAojN8XHnNAH4fx4+MCT5GXrV > h1EL1PhvFnpbQ5haTOHNIwCNtW3OPwdLsXXVimOVF6UvEZepF3pDJUL0KVV+Kfem > p+r5BjkcjZ7LYirDBPFCsIovSwFcLrLScPUKbDHhF0Re5E7K7EtXuVuGGCJqWRsf > 8w8Z2pcyBIhX85+D+kBZ2m6MFODXnEqTQeGbFhzffuPXV/DuvipARpFg9s8uo1ws > 85NEtFzHjNblgxVxFaEgbbWulKT1ZNZerAMRnGDh9W2ngMjwYuQfevbJghUkM5b4 > nMc/aNU2mg10lneRwTUIJ0f/aGfiCQegjSSEYGIDi1LcDHDkI4GPmMz3gGIfItBs > yBEWXKn8aqVqVEVKjFzq5tD0kw9zyCEErYJH6N7o0HYmHHYfPxgz5Cr8gnnayUac > Ru2Z7Ur1lnZZnC72oUwz > =bJFf > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org