Weston M. Price created QPID-3990:
-------------------------------------
Summary: Multiple XAResources isSameRM behavior
Key: QPID-3990
URL: https://issues.apache.org/jira/browse/QPID-3990
Project: Qpid
Issue Type: Bug
Components: Java Client, JCA
Affects Versions: 0.14, 0.17
Environment: All supported OS platforms. All supported JEE platforms.
Reporter: Weston M. Price
Assignee: Weston M. Price
Priority: Critical
In fixing QPID-3263, an issue has cropped up when two XAResources have the same
underlying ResourceManager(RM). Originally the isSameRM method returned false
regardless of whether or not the RM's were the same. Since we now return true
when two or more XAResources are involved, we get an ILLEGAL_STATE exception
being that the DtxStart/DtxEnd calls are not paired for each XAResource because
the TransactionManager (TM) treats the XAResource(s) as being on the same
transaction branch. As a result, DtxEnd is only called on one resource.
According to Gordon, this may be a discrepancy between XA and the AMQP .10
specification. This has inadvertently worked in the JCA code due to bug in the
isSameRM method and the use of the QpidRAXAResourceWrapper.
While it might make sense to simply roll back to the old behavior, this is not
going to perform as well being that most TM's can optimize underlying
transaction state with isSameRM is true. This has performance implications for
the TM in terms of logging, management etc.
I have a fix for this issue that allows XAResources to be aware of each other
in a transaction chain. When DtxEnd is called on one resource, the sibling
XAResources.end method is called thereby matching the DtxStart/DtxEnd
invocations appropriately allowing the transaction to complete.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.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]