[jboss-jira] [JBoss JIRA] (WFLY-10229) org.jboss.as.txn.service.internal.tsr.TransactionSynchronizationRegistryWrapper.getStatus() should use org.wildfly.transaction.client.ContextTransactionManager.getStatus()
David Lloyd (JIRA)
issues at jboss.org
Tue Apr 17 14:02:00 EDT 2018
[ https://issues.jboss.org/browse/WFLY-10229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13562629#comment-13562629 ]
David Lloyd commented on WFLY-10229:
------------------------------------
bq. David Lloyd if the transaction has been marked for rollback then Narayana won't call before completion:
Okay, so much for that hypothesis :)
bq. Scott Marlow why is ContextTransactionManager maintaining its own transaction status code - that is the role of the transaction manager to determine the transaction status.
You're definitely asking the wrong person. :) The answer though is, it doesn't: it passes the status through. I think what's happening is that the wrong transaction is being resumed during the synchronization (because the special TSR wrapper is bypassing the WFTC API). So WFTC thinks transaction A is resumed but Narayana thinks it's B.
I'm working on a fix which involves putting this TSR ordering logic into WFTC (so that it works even when executing in a remote transaction for example).
> org.jboss.as.txn.service.internal.tsr.TransactionSynchronizationRegistryWrapper.getStatus() should use org.wildfly.transaction.client.ContextTransactionManager.getStatus()
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: WFLY-10229
> URL: https://issues.jboss.org/browse/WFLY-10229
> Project: WildFly
> Issue Type: Task
> Components: Transactions
> Reporter: Scott Marlow
> Assignee: David Lloyd
> Fix For: 13.0.0.Beta1
>
>
> org.jboss.as.txn.service.internal.tsr.TransactionSynchronizationRegistryWrapper.getStatus() is currently using com.arjuna.ats.jta.TransactionManager, instead it should use org.wildfly.transaction.client.ContextTransactionManager.getStatus().
> I'm seeing a case in Hibernate ORM 5.3, where org.wildfly.transaction.client.ContextTransactionManager.getStatus() returns 4 but TransactionSynchronizationRegistryWrapper.getStatus() returns 1.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list