Oh, and 'throw e;' at the end of the handler :-) David Bullock Machaira Enterprises Pty Ltd
PO Box 31 Canowindra NSW 2804 02 6344 1100 http://machaira.com.au/ On 21 November 2013 11:48, David Bullock <david.bull...@machaira.com.au> wrote: > 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