Vladimir Konkov created DBCP-428:
------------------------------------

             Summary: Unsuccessful Connection enlistment in XA Transaction 
ignored by TransactionContext
                 Key: DBCP-428
                 URL: https://issues.apache.org/jira/browse/DBCP-428
             Project: Commons Dbcp
          Issue Type: Bug
    Affects Versions: 1.4, 2.0.1
         Environment: All
            Reporter: Vladimir Konkov
            Priority: Critical


When TransactionContext call 'enlistResource()' on Transaction it is ignored 
returned result. This hapens at least when XAResource throws XAException in 
enlistResource method. By contract XAException should not be propagated by 
'enlistResource()' , instead 'false' is returned.
As result:
1. ManagedConnection returned by pool is not enlisted in transaction 
(application think it does)
2. Transaction itself marked for rollback (because of XaException).
3. ManagedConnection returned by pool used by application without any errors 
until commit on transaction is called. Changes made in not enlisted connection 
may be commited on other use of native connection or rolled back depending on 
pool config.

Issue is very dangerous especialy if changed made by application will be 
commited later but XA transaction in witch it made has bin rolled back.

We are hit by this bug in production using MS SQL Server and PostgreSQL JDBC 
drivers.



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

Reply via email to