commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gabor Horvath (JIRA)" <>
Subject [jira] Commented: (DBCP-331) SharedPoolDataSource does not handle null keys correctly
Date Fri, 16 Apr 2010 20:02:25 GMT


Gabor Horvath commented on DBCP-331:

Thanks for checking. I should have really considered the threading issues, I didn't catch
the related comments in header...

Just in nutshell, I had problem with connection pooling. Above layers get connections in invalid
state; quite difficult to reproduce this symptom but happens under heavy load. I will try
to provide a test application maybe next week.

For 1 and 2 I just checked the code and found that part where new object is created without
synchronization; this can have sideeffect in case the latch remains in the allocation queue.
As I saw chance for that by tracing, I synchronized it and also changed the allocate method
to handle the situation if an object is already assigned to the latch... I try to create patches
for these.

Regarding 3.) you are totally right.

> SharedPoolDataSource does not handle null keys correctly
> --------------------------------------------------------
>                 Key: DBCP-331
>                 URL:
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.3, 1.4
>         Environment: Windows, java version "1.6.0_06", Torque 3.3 (DBCP 1.4, jTDS 1.2.5)
>            Reporter: Gabor Horvath
>         Attachments:
> GenericKeyedObjectPool.borrowObject does not invalidate object if validateObject fails
(line ~1200). I guess invalidation would be needed for objects which are not newly created
(newlyCreated flag in the code).
> Scenario:
> 1.) DB connection put into pool
> 2.) Attempt to reuse connection (borrowObject)
> 3.) Test on borrow (executing simple SQL query) fails: DB connection closed on jTDS level
but connection remains in the pool
> 4.) Subsequent attempts to reuse the connection causes "java.sql.SQLException: Invalid
state, the Connection object is closed"

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message