[ http://issues.apache.org/jira/browse/POOL-87?page=all ]

Bernie McGourty updated POOL-87:
--------------------------------

    Attachment: TestGenericObjectPool.java

I've added a new method: testMinIdlePoolSequence() to the 
TestGenericObjectPool.java.

Here's the result ofr the test:

test:
     [echo] Because we need to sleep to test the eviction threads, this takes a 
little while (a
round 35 seconds)...
     [java] .........................................
     [java] .........................................
     [java] ......F...................................
     [java] ...........
     [java] Time: 47.186
     [java] There was 1 failure:
     [java] 1) 
testMinIdlePoolSequence(org.apache.commons.pool.impl.TestGenericObjectPool)junit
.framework.AssertionFailedError: Validate only called on activated Objects,  
Activated: false V
alidated: true
     [java]     at 
org.apache.commons.pool.impl.TestGenericObjectPool.testMinIdlePoolSequence(T
estGenericObjectPool.java:749)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
     [java]     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)

     [java] FAILURES!!!
     [java] Tests run: 134,  Failures: 1,  Errors: 0



> Commons-Pool does not always calling activateObject on newly created Objects
> ----------------------------------------------------------------------------
>
>                 Key: POOL-87
>                 URL: http://issues.apache.org/jira/browse/POOL-87
>             Project: Commons Pool
>          Issue Type: Bug
>         Environment: Windows 2003 Java HotSpot(TM) Client VM (build 
> 1.5.0_08-b03, mixed mode, sharing)
>            Reporter: Bernie McGourty
>         Attachments: TestGenericObjectPool.java
>
>
> I'm using the GenericObjectPool and a PoolableObjectFactory.
> The GenericObjectPool works as expected and documented in that my 
> implementation of the PoolableObjectFactory is called according to the 
> life-cycle:
> 1. makeObject is called whenever a new instance is needed. 
> 2. activateObject is invoked on every instance before it is returned from the 
> pool. 
> 3. passivateObject is invoked on every instance when it is returned to the 
> pool. 
> 4. destroyObject is invoked on every instance when it is being "dropped" from 
> the pool (whether due to the response from validateObject, or for reasons 
> specific to the pool implementation.) 5. validateObject is invoked in an 
> implementation-specific fashion to determine if an instance is still valid to 
> be returned by the pool. It will only be invoked on an "activated" instance. 
> I've set the minimum idle instances to 5 and when the pool goes below 5 
> instances, new objects are created to reach the minimum. 
> The problem is that the life-cycle is not followed in that makeObject is 
> called on the PoolFactory and then validateObject - activateObject is never 
> called. 
> The interface doc for validateObject stipulates that it will only be invoked 
> on "activated" objects.
> I looked at the GenericObjectPool class and it appears that ensureMinIdle() 
> creates the new objects required by calling addObject() but when it calls 
> addObjectToPool() the newly created object is never activated before it is 
> validated.
> I'm using the following pool config:
> poolConfig.maxWait        = 5000;
> poolConfig.maxActive      = 100;
> poolConfig.minIdle        = 5;
> poolConfig.maxIdle        = 50;
> poolConfig.testOnBorrow   = true;
> poolConfig.testOnReturn   = true;
> poolConfig.testWhileIdle  = true;
> poolConfig.timeBetweenEvictionRunsMillis  = 15000; 
> poolConfig.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to