You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2018/10/27 19:45:00 UTC

[jira] [Resolved] (POOL-340) borrowObject is stuck, if create fails

     [ https://issues.apache.org/jira/browse/POOL-340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mark Struberg resolved POOL-340.
--------------------------------
       Resolution: Fixed
         Assignee: Mark Struberg
    Fix Version/s: 2.6.1

> 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
>            Assignee: Mark Struberg
>            Priority: Critical
>             Fix For: 2.6.1
>
>
> 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)