[ https://issues.apache.org/jira/browse/POOL-340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16458401#comment-16458401 ]
Pavel Kolesov commented on POOL-340: ------------------------------------ [~psteitz], thank you for the workaround idea. Can't really argue with your view of the problem, just adding one more thing to notice - if factory is "down" borrowObject can either stuck or propagate the factory's exception. > borrowObject is stuck, if create fails > -------------------------------------- > > Key: POOL-340 > URL: https://issues.apache.org/jira/browse/POOL-340 > Project: Commons Pool > Issue Type: Bug > Affects Versions: 2.4, 2.4.1, 2.4.2, 2.4.3, 2.5.0 > Reporter: Pavel Kolesov > Priority: Critical > > After changes in 2.4.3 there is a high chance of a scenario, in which > borrowObject waits infinitely, if create fails or no one calls a create. > {noformat} > java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0x0000000083cfd978> (a > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) > at > org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583) > at > org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:442) > at > org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) > {noformat} > If pool is exhausted, when borrowObject tries to get idle object, it waits > for new object to be created. > If all objects are returned to pool invalid and destroyed, and it is > impossible to create a new one, borrowObject will not return. > Even if afterwards it is becomes possible to crate a new object but no one > creates it, borrowObject will not return either. -- This message was sent by Atlassian JIRA (v7.6.3#76005)