[ 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]