[jira] [Updated] (POOL-327) GKOP: returnObject does not unblock threads waiting in borrowObject if maxIdle=0

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jira] [Updated] (POOL-327) GKOP: returnObject does not unblock threads waiting in borrowObject if maxIdle=0

JIRA jira@apache.org

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

Paul Pazderski updated POOL-327:
--------------------------------
    Description:
If idle objects are disabled by maxIdle=0 a thread blocked in borrowObject is not notified if another thread returns an object.

Attached is a unit test (327-maxIdle0-test.patch) that demonstrates the issue. I tried a similar test on GenericKeyedObjectPool as well which not seems to be affected by this issue.

I also attached two possible solutions for this issue.
The first (327-maxIdle0.patch) just notifies a potentially waiting thread in the affected returnObject code branch. (similar to POOL-240)

The second (327-maxIdle0-alternativ.patch) checks for waiting threads every time an object get destroyed. But this may introduce undesired behavior in other functions. (like clear or evict)

  was:
If idle objects are disabled by maxIdle=0 a thread blocked in borrowObject is not notified if another thread returns an object.

Attached is a unit test ({{327-maxIdle0-test.patch}}) that demonstrates the issue. I tried a similar test on GenericKeyedObjectPool as well which not seems to be affected by this issue.

I also attached two possible solutions for this issue.
The first ({{327-maxIdle0.patch}}) just notifies a potentially waiting thread in the affected returnObject code branch. (similar to POOL-240)

The second ({{327-maxIdle0-alternativ.patch}}) checks for waiting threads every time an object get destroyed. But this may introduce undesired behavior in other functions. (like clear or evict)


> GKOP: returnObject does not unblock threads waiting in borrowObject if maxIdle=0
> --------------------------------------------------------------------------------
>
>                 Key: POOL-327
>                 URL: https://issues.apache.org/jira/browse/POOL-327
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 2.4.2
>            Reporter: Paul Pazderski
>            Priority: Minor
>         Attachments: 327-maxIdle0-alternativ.patch, 327-maxIdle0.patch, 327-maxIdle0-test.patch
>
>
> If idle objects are disabled by maxIdle=0 a thread blocked in borrowObject is not notified if another thread returns an object.
> Attached is a unit test (327-maxIdle0-test.patch) that demonstrates the issue. I tried a similar test on GenericKeyedObjectPool as well which not seems to be affected by this issue.
> I also attached two possible solutions for this issue.
> The first (327-maxIdle0.patch) just notifies a potentially waiting thread in the affected returnObject code branch. (similar to POOL-240)
> The second (327-maxIdle0-alternativ.patch) checks for waiting threads every time an object get destroyed. But this may introduce undesired behavior in other functions. (like clear or evict)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
Loading...