[dbcp] Threads do not get a Connection in FIFO mode
---------------------------------------------------
Key: DBCP-189
URL: http://issues.apache.org/jira/browse/DBCP-189
Project: Commons Dbcp
Type: Bug
Versions: 1.2 Final
Environment: commons-dbcp-1.2.1.jar
Reporter: rod
hi,
the SharedPoolDataSource class uses the class GenericKeyedObjectPool which has
a FIFO behavior.
the problem is that when all connections in the pool are used, the synchronised
method SharedPoolDataSource.getPooledConnectionAndInfo
calls the borrowObject() blocking method and does not release its monitor.
as a result, all other threads asking for a connection get blocked trying to
get the monitor
and will get a connection later in a non-FIFO mode.
i think the fix is to synchronized only the code block :
if (pool == null) {
try {
registerPool(username, password);
} catch (NamingException e) {
throw new SQLNestedException("RegisterPool failed", e);
}
}
instead of synchronizing the whole method.
thanks
rodolphe
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]