commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Kolesov (JIRA)" <>
Subject [jira] [Commented] (POOL-340) borrowObject is stuck, if create fails
Date Mon, 30 Apr 2018 08:44:00 GMT


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:
>             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(
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(
>         at org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(
>         at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(
>         at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(
> {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

View raw message