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)