[ 
https://issues.apache.org/jira/browse/DBCP-438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14623849#comment-14623849
 ] 

Phil Steitz commented on DBCP-438:
----------------------------------

Adding the null check to DelegatingConnection#closeInternal  fixes the reported 
issue here (and is probably not a bad idea in any case), but I suspect that 
what is really going on here is that we don't correctly support the use case in 
the example.  I am not a JTA expert, so could use some help reviewing the code 
in ManagedConnection.  It looks to me like the code in this example triggers 
incorrect (at least incomprehensible to me) behavior in 
ManagedConnection#updateTransactionStatus.  Looks to me like the first 
connection will get closed and returned to the pool when the second one is 
opened.   

> Nested connections in a transaction (local) throws null pointer
> ---------------------------------------------------------------
>
>                 Key: DBCP-438
>                 URL: https://issues.apache.org/jira/browse/DBCP-438
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 2.0, 2.1
>         Environment: All (linux, aix, windows)
>            Reporter: Raihan Kibria
>             Fix For: 2.1.1
>
>         Attachments: TestManagedDataSourceInNesetedConnTx.java, dbcpNull.png
>
>
> In a transaction context, if we open multiple connections and close each of 
> them after commit, we get a null pointer exception. Sample code:
>               transactionManager.begin();
>               
>               Connection c1 = null;
>               Connection c2 = null;
>               
>               c1 = newConnection();
>               c2 = newConnection();
>               
>               transactionManager.commit();
>               
>               try{
>                       c1.close();
>               }catch(Exception e){
>                       e.printStackTrace();
>               }
>               
>               try{
>                       c2.close();
>               }catch(Exception e){
>                       //throws execption
>                       e.printStackTrace();
>               }
> Null pointer is thrown at:
> org.apache.commons.dbcp2.DelegatingConnection.closeInternal
> Affects versions-- 2.1, 2.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to