commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shawn Heisey <>
Subject Re: [EXTERNAL]Re: DBCP issuing more sessions than maxActive sessions in Oracle
Date Wed, 25 Jan 2017 00:29:34 GMT
On 1/24/2017 3:55 PM, Romero, René wrote:
> We're running  commons-dbcp-1.4 and commons-pool-1.6. To me, it sounds like we're being
impacted by this bug:
> [DBCP-379] number of connections created has crossed more ...<>
> I found that when the minIdle is configured then during loads, common pool creates more
number of connections it will be greater than maxActive.
> Is it transparent application-wise to jump from these versions to the latests? Or what
upgrading path do you suggest we take?

I don't know anything about that bug or whether that is what you are
encountering, but I can discuss upgrading.

You seem to be on the latest 1.x versions.  Upgrading to the 2.x
versions will require code changes, because the package names have
changed.  A few other things have changed as well.

When I did the upgrade, I found it to be pretty easy to make the
conversion.  Changing the imports was a big part of the job, which my
IDE (eclipse) basically did for me.  A few changes were also required
when building the datasource objects.

Here's a slightly redacted patch that shows the code changes I made when
I upgraded POOL and DBCP from 1.x to 2.x:

This upgrade was done nearly two years ago, but I think I remember
enough about it that I may be able to answer questions on the patch.

The code went through a whole bunch of changes after the upgrade.  I
changed "replica" to "main" throughout the class.  The "replica database
server" section that you can see in the patch now looks like the following:

   * Create a datasource (connection pool) for the main database server.
  ConnectionFactory cfMain = new DriverManagerConnectionFactory(mainUrl,
dbUser, dbPass);
  PoolableConnectionFactory pcfMain = new
PoolableConnectionFactory(cfMain, null);
  pcfMain.setValidationQueryTimeout(Const.FIVE_SECONDS / 1000);
  opMain = new GenericObjectPool<>(pcfMain);
  opMain.setMaxTotal(numShards * 5);
  opMain.setNumTestsPerEvictionRun(numShards * 5);
  opMain.setMinEvictableIdleTimeMillis(Const.ONE_MINUTE * 5);
  dsMain = new PoolingDataSource<>(opMain);


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message