You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Phil Steitz (JIRA)" <ji...@apache.org> on 2006/12/10 00:29:22 UTC

[jira] Resolved: (DBCP-189) [dbcp] Threads do not get a Connection in FIFO mode

     [ http://issues.apache.org/jira/browse/DBCP-189?page=all ]

Phil Steitz resolved DBCP-189.
------------------------------

    Resolution: Won't Fix

The dbcp API makes no commitments regarding preserving invariants of the underlying pool, other than that the exposed parameters work as advertised and the pool API is used to borrow and return objects.  In particular, the FIFO behavior of commons-pool is not guaranteed to be preserved by dbcp.
If there is more to this ticket than that (i.e., if there is a performance or concurrency problem here as well), please reopen.

> [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
>          Issue Type: Bug
>    Affects Versions: 1.2.2
>         Environment: commons-dbcp-1.2.1.jar
>            Reporter: rod
>         Attachments: DBCP-189.txt
>
>
> 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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org