[
https://issues.apache.org/jira/browse/POOL-340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16442200#comment-16442200
]
Pavel Kolesov commented on POOL-340:
------------------------------------
Tried the same scenario on 2.4.2 - the same result. We used to have 1.5.5
before, which doesn't seem to suffer from this problem.
The objection "if factory can't create, so why borrow should return something"
is also checked - if pool is not exhausted and factory throws exception,
borrowObject does return (the exception is propagated).
> 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.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)