Hi,
Recently we had a hardware issue due to which numActive use to drop
drastically (in netstat I found that number of connections established to
oracle db was keep on reducing). 
 
Enhancement/Suggession is to log a warning or recreate a new connection and
put into pool when _numActive  < _minIdle or _numActive < _maxIdle (please
refer to the suggested  code change)
 
I am new to this community so, i might be wrong in the code which i am
refering to.
 
Please let me know if it make sence to submit the patch on this.
 
thanks in advance,
Bhaskar
Suggested code change: 

public class GenericObjectPool extends BaseObjectPool implements ObjectPool
{

   .............

   ..............

    public synchronized void evict() throws Exception {

           .........

           .........

          if(removeObject) {

                     try {

                            iter.remove();

                            int prevNumActive = _numActive;

                           _factory.destroyObject(pair.value);

                           //suggession start

                            if( (prevNumActive < _maxIdle) || (_numActive <
_numIdle) )  {

                                       //log a warning telling that too many
connections are getting invalidated during eviction time.

                                               or

                                       //create a new connection and put it
into pool back.

                           }

                           //suggession end                 

                            } catch(Exception e) {

                                       // ignored

                            } 

}

PS: 

Enviornment: RHEL 4 with JDK 1.4

Configs: 

maxActive = 50

maxIdle = 30

factory=org.apache.commons.dbcp.BasicDataSourceFactory

maxWait=10000

timeBetweenEvictionRunsMillis=900000

numTestsPerEvictionRun=50

minEvictableIdleTimeMillis=1800000

testWhileIdle=true

I noticed that in netstat, number of connections with oracle db got reduced
from 12 to 8 at some point of time. 

Reply via email to