commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Thomas (JIRA)" <>
Subject [jira] Commented: (POOL-107) number of connections created has crossed more than maxActive
Date Sun, 05 Apr 2009 22:37:12 GMT


Mark Thomas commented on POOL-107:

I can re-create this, but only by forcing a particular execution sequence with a debugger.
The issue lies within the for loop in ensureMinIdle(). Consider the case where _numIdle=0,
_minIdle>0 and _numActive+1 == _maxActive. If a client thread enters borrowObject() at
the point where the evictor thread is about to call addObject() both threads will create objects
leaving _numIdle==1 & _numActive==_maxActive. The next client call to borrowObject() will
result in _numActive==_maxActive+1

DBCP-44 contains a patch that addresses this for GenericObjectPool. The other pools need a
similar patch. Since it is pool that needs to be patched, I'll use this issue to track progress
rather than DBCP-44.

> number of connections created has crossed more than maxActive 
> --------------------------------------------------------------
>                 Key: POOL-107
>                 URL:
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 1.3
>         Environment: OS:Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
> uname:Linux 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:32:14 EDT 2005 i686
> vm_info: Java HotSpot(TM) Server VM (1.4.2_13-b06) for
> linux-x86, built
> on Oct 18 2006 09:55:11 by unknown with unknown compiler
>            Reporter: Bhaskar NA
>             Fix For: 1.5
> I found that when the minIdle is configured then during loads, common pool creates more
number of connections  it will be greater than maxActive.
> When I had following settings:
> maxActive = 50
> maxIdle = 30
> minIdle=30
> factory=org.apache.commons.dbcp.BasicDataSourceFactory
> maxWait=10000
> timeBetweenEvictionRunsMillis=900000
> numTestsPerEvictionRun=50
> minEvictableIdleTimeMillis=1800000
> testWhileIdle=true
> testOnBorrow = true
> validationQuery='select 1 from dual'
> Number of connections in the pool went upto 121. (found thru netstat)
> When I changed minIdle to 15 and did my load test connecitons in the pool went upto 66
> Looks like maxActive is getting bypassed with minIdle.
> When I changed minIdle to 10 and maxActive to 30 and maxIdle to 30 then number of connections
went upto 40.
> Can someone please throw light on what is going on here? I am using DBCP 1.2.1 and common
pool 1.3.
> Bhaskar

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message