Hello,

I have noted an error in the DBCP 1.2.1 documentation; due to this error, my server hung and it took several days to find the reason. What the documentation say (http://jakarta.apache.org/commons/dbcp/configuration.html):

maxActive - The maximum number of active connections that can be allocated from this pool at the same time, or __non-positive__ for no limit.

Non-positive means 0, -1, -2, ...

But look in GenericObjectPool.java, line 797 (GenericObjectPool class, borrowObject method):

// otherwise
if(null == pair) {

 // check if we can create one
 // (note we know that the num sleeping is 0, else we wouldn't be here)
 if(_maxActive < 0 || _numActive < _maxActive) {
     // allow new object to be created
     ...
     wait();
     ...

These lines of code are executed when, for example, all your pooled connections became invalid (because of inactivity/timeout period), so the pool is now empty and we are deciding to create or not to create a new object. In my case, the server hung in wait() waiting for new connections in the pool, but maxActive was 0 and nobody created new objects.

That the documentation says "non-positive" for unlimited case, but it should say "negative" (that is -1, -2, ...; but not 0).

--
Victor

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to