Marc,
I used the following to track down a connection leak when using an older version of DBCP. I have not used it with later versions but I believe some of the DBCP methods seen here have been removed. This method was called after each call to open() and we saw the number of active connections just keep on growing.

   public static String getConnectionPoolInfo( Dao dao){
       BasicDataSource ds = dao.getDataSource() ;
String configInfo = "initialSize=" + ds.getInitialSize() + " maxActive=" + ds.getMaxActive() + " maxIdle=" + ds.getMaxIdle() + " minIdle=" + ds.getMinIdle() ; return configInfo + "\nactive connections=" + ds.getNumActive() + " idle connections=" + ds.getNumIdle() ;
   }

hope this helps,
-=beeky

Marc Logemann wrote:

But in my view, connection leak means, i am not closing SQL connections
(apart form the fact that i checked this) but then these connections
would be "in use" by the pool and also "in use" by the the server jobs
that hold the connections. But thats not the case.

The "server jobs" may have vanished entirely, resulting in the
connection wrappers that they checked out from the pool getting
*abandoned*. Unless and until these objects are returned to the pool
by executing close() on them, DBCP considers them active, in use. If
they are never returned, pool capacity is leaked.


THen it would be interesseting to know who is killing the server jobs on the i5 (IBM) machine if not the pool itself. I am quite sure that the DB2 on the i5 is not deleting connection jobs because it cant know if they are still needed. If DBCP is killing them it should not think at the same time that they are active and wait for a close() call.

In my view, a typical connection leak has plenty of connections on the DB side (and in the pool of course) which are open and which never get closed. This is a typical situation.

I will replace DBCP with the other mentioned pool if pool1.4 doesnt solve it and if i really have a problem with closing connections and thus leaking, i would face the same problems with C3P0 too.

BTW is there a log level which i can use where DBCP prints out how many connections he thinks are currently in use by the pool? I mean, this would be a valuable information for debugging.

Marc

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to