commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (POOL-285) GenericKeyedObjectPool.returnObject() checks for idle object too late
Date Wed, 13 May 2015 13:11:00 GMT

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

Phil Steitz updated POOL-285:
-----------------------------
    Affects Version/s: 2.0
                       2.1
                       2.2
                       2.3
        Fix Version/s: 2.4

Good catch.  I think this actually applies to GOP as well.  The early check and markReturning
call in GOP is only performed when abandoned object tracking is enabled.  I think the following
block should be executed after the null check on p, unconditionally at the top of returnObject
for both GOP, GKOP.  If I don't hear objections, I will commit this change to both classes
and add a test to verify that multiple returns generate exceptions but don't repassivate objects
in the pool.

{code}
synchronized(p) {
    final PooledObjectState state = p.getState();
    if (state != PooledObjectState.ALLOCATED) {
        throw new IllegalStateException(
            "Object has already been returned to this pool or is invalid");
    } else {
        p.markReturning(); // Keep from being marked abandoned
    }
}
{code}

> GenericKeyedObjectPool.returnObject() checks for idle object too late
> ---------------------------------------------------------------------
>
>                 Key: POOL-285
>                 URL: https://issues.apache.org/jira/browse/POOL-285
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 2.0, 2.1, 2.2, 2.3
>            Reporter: Sebb
>             Fix For: 2.4
>
>
> GenericKeyedObjectPool.returnObject() checks if the object was already returned to the
pool after it has performed validation (if reqd) and after the object has been passivated.
> This seems wrong - surely if the object has already been returned to the pool it should
not be validated or passivated again?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message