commons-issues mailing list archives

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


Phil Steitz updated POOL-285:
    Affects Version/s: 2.0
        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.

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

> GenericKeyedObjectPool.returnObject() checks for idle object too late
> ---------------------------------------------------------------------
>                 Key: POOL-285
>                 URL:
>             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

View raw message