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

Philippe Mouawad updated DBCP-193:
----------------------------------

    Attachment: 
ShowsBasicDataSourceBadNumActiveIfNoCheckForIsClosedAndDoubleClose.java
                ShowsLeaksIfCheckForIsClosed.java
                TestUtils.java

To work, the call isClosed() in PoolableConnection.java must return true (Case 
of an End of communication on channel in Oracle):
public synchronized void close() throws SQLException {
        boolean isClosed = false;
        try {
            isClosed = isClosed();

> BasicDataSource returns negative values for NumActive when Oracle Driver 
> Connection#isClosed return true (End of file communication on CHannel)
> -----------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DBCP-193
>          URL: http://issues.apache.org/jira/browse/DBCP-193
>      Project: Commons Dbcp
>         Type: Bug

>     Versions: 1.2.1, 1.2.2
>  Environment: Windows / Oracle 10G JDBC driver / Oracle 10G / JDK 1.4.2_08 / 
> Commons-dbcp-1.2.1.jar / COmmons-pool-1.3.jar
>     Reporter: Philippe Mouawad
>     Priority: Blocker
>  Attachments: 
> ShowsBasicDataSourceBadNumActiveIfNoCheckForIsClosedAndDoubleClose.java, 
> ShowsLeaksIfCheckForIsClosed.java, TestUtils.java
>
> Hello,
> This bug occurs if the following conditions are met:
> A End of File communication on CHannel occurs 
> Oracle Driver 10G will return true for Connection#isClosed()
> Related bugs:
> http://issues.apache.org/jira/browse/DBCP-3
> http://issues.apache.org/jira/browse/DBCP-28
> Case 1:
> The client calls isClosed() before closing a connection since commons-dbcp 
> does not allow double close without throwing (see 
> http://issues.apache.org/jira/browse/DBCP-3)
> => The problem is that since he calls isClosed, he encounters the same bug 
> reported in http://issues.apache.org/jira/browse/DBCP-28 because 
> conn.isClosed() will return true and the client will not call close.
> if (!conn.isClosed())
> {
> try{
> conn.close();
> }catch(Exception e){}
> }
> see what happens if the isClosed() in PoolableConnection returns true : 
> ShowsLeaksIfCheckForIsClosed.java
> Case2:
> The client tries to find a solution, and calls conn.close() without checking 
> isClosed(), but the problem is that the client is in a Persistence fwk and 
> the client may have already called close, so he ends up calling close() 
> twice, see what happens if the isClosed() in PoolableConnection returns true 
> : ShowsBasicDataSourceBadNumActiveIfNoCheckForIsClosedAndDoubleClose.java

-- 
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]

Reply via email to