[JBoss JIRA] (JBTM-860) use XAResourceWrapper metadata for assume complete
by Ondra Chaloupka (JIRA)
[ https://issues.jboss.org/browse/JBTM-860?page=com.atlassian.jira.plugin.s... ]
Ondra Chaloupka commented on JBTM-860:
--------------------------------------
Hi [~alon3392],
the fix of the issue is part of the JBoss EAP from release 7.0.0. I have to admit that the documentation is not clear in this and the section seems to be a remainder from times of the EAP 6.4.
The core of the fix is let the transaction manager to know what is the data source of particular unfinished record in the transaction object store. That's ensured by verifying jndi name bound to the particular XAResource (loaded from the object store). The value of the jndi name is obtained from XAResources implementing the special interface https://github.com/jbosstm/jboss-transaction-spi/blob/master/src/main/jav.... If particular implementation of the XAResource uses the wrapper and provides the jndi name identifier for the transaction manager then it's capable to decide if the indoubt transaction participant loaded from the object store was or wasn't committed. This interface is "implemented" by ironjacamar (JCA implementation in WildFly) and by Artemis ActiveMQ resource adapter.
In summary it means the fix JBTM-860 involves
* any datasource - database jdbc connection - configured in WildFly
* artemis activemq resource adapter - {{messaging-activemq}} WildFly configuration
If you use other resource adapters (e.g. WSMQ) then this fix does not apply for it.
> use XAResourceWrapper metadata for assume complete
> --------------------------------------------------
>
> Key: JBTM-860
> URL: https://issues.jboss.org/browse/JBTM-860
> Project: JBoss Transaction Manager
> Issue Type: Feature Request
> Components: Resource Manager
> Affects Versions: 4.15.0
> Reporter: Jonathan Halliday
> Assignee: Gytis Trikleris
> Fix For: 5.1.0
>
>
> In the XA protocol a time window exists wherein the RM has committed and thus forgotten a tx branch but the TM has not yet deleted its log. A crash during this window currently results in an unrecoverable situation, as the TM assumes the branch belongs to an RM that is uncontactable and will retry recovery indefinitely. This stems from an inability to relate the Xid to a specific RM. It can be overridden globally with JTAEnvironmentBean.xaAssumeRecoveryComplete, but we would prefer more fine-grained control. With the availability of RM id information from XAResourceWrapper this becomes feasible.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)