[
https://issues.apache.org/jira/browse/DBCP-334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Phil Steitz updated DBCP-334:
-----------------------------
Affects Version/s: 1.2.1
1.2.2
1.4
Fix Version/s: 1.4.1
1.3.1
> BasicDataSource does not consider the method
> "setSoftMinEvictableIdleTimeMillis" of CommonsPool.GenericObjectPool
> -----------------------------------------------------------------------------------------------------------------
>
> Key: DBCP-334
> URL: https://issues.apache.org/jira/browse/DBCP-334
> Project: Commons Dbcp
> Issue Type: Bug
> Affects Versions: 1.2.1, 1.2.2, 1.3, 1.4
> Reporter: Alberto Mozzone
> Priority: Critical
> Fix For: 1.3.1, 1.4.1
>
>
> The BasicDataSource should have the "softMinEvictableIdleTimeMillis" (get and
> set) as the GenericObjectPool, to avoid destroying idle connections below the
> "minIdle" value. In this case, connections are dropped and immediately
> recreated with no reason. The "minEvictableIdleTimeMillis" should not be
> considered because there are ways to validate idle connections before they
> are used.
> The class should have these lines of code, besides those existing:
> // property
> private long softMinEvictableIdleTimeMillis =
> GenericObjectPool.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
> // getter
> /**
> * Returns the {...@link #softMinEvictableIdleTimeMillis} property.
> * @return the value of the {...@link #softMinEvictableIdleTimeMillis}
> property
> * @see #softMinEvictableIdleTimeMillis
> */
> public synchronized long getSoftMinEvictableIdleTimeMillis() {
> return softMinEvictableIdleTimeMillis;
> }
> // setter
> /**
> * Sets the {...@link #softMinEvictableIdleTimeMillis} property.
> * @param softMinEvictableIdleTimeMillis the minimum amount of time an
> object
> * may sit idle in the pool
> * @see #softMinEvictableIdleTimeMillis
> */
> public synchronized void setSoftMinEvictableIdleTimeMillis(final long
> softMinEvictableIdleTimeMillis) {
> this.softMinEvictableIdleTimeMillis =
> softMinEvictableIdleTimeMillis;
> if (connectionPool != null) {
>
> connectionPool.setSoftMinEvictableIdleTimeMillis(softMinEvictableIdleTimeMillis);
> }
> }
> // creator of the pool
> @Override protected void createConnectionPool() {
> super.createConnectionPool();
>
> connectionPool.setSoftMinEvictableIdleTimeMillis(softMinEvictableIdleTimeMillis);
> }
> I implemented myself a "NotSoBasicDataSource" class, inheriting from
> "BasicDataSource" and used it in a single test. It worked: idle connections
> do not decrease under (and re-grow to) "minIdle".
> Please, consider this feature, because it can save resources.
> I don't know what is the behavior of the Tomcat DBCP, but it seems to me it
> has the same problem.
> I'm waiting your opinions.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.