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

Reply via email to