[JBoss JIRA] (JBTM-1865) Transaction reported to be rolled back, although committed with one participant
by Tom Jenkinson (JIRA)
[ https://issues.jboss.org/browse/JBTM-1865?page=com.atlassian.jira.plugin.... ]
Tom Jenkinson commented on JBTM-1865:
-------------------------------------
Hi Christian,
1. You have changed a significant aspect of the Jira so this should be a new discussion on the forum.
2. We can shortcut the discussion on the forum when I say that XAER_RMERR is fairly clear cut in that it means "An error occurred in committing the work performed on behalf of the transaction branch and the branch’s work has been rolled back." XA chapter 5 xa_commit
Thanks,
Tom
> Transaction reported to be rolled back, although committed with one participant
> -------------------------------------------------------------------------------
>
> Key: JBTM-1865
> URL: https://issues.jboss.org/browse/JBTM-1865
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, I'll file the second issue shortly and update this ticket accordingly.
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the first database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> But now things go awry:
> 1. There is a XAResource.rollback() issued to the second XAResource.
> 2. The client receives a EJBTransactionRolledbackException, although
> one branch has been completed.
> Note, that our database does not support heuristical completion of a branch at all, i.e. there should be no Heuristic* exception be thrown either.
> The correct behavior is, to report the transaction as success to the client, commit all branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1865) Transaction reported to be rolled back, although committed with one participant
by Christian von Kutzleben (JIRA)
[ https://issues.jboss.org/browse/JBTM-1865?page=com.atlassian.jira.plugin.... ]
Christian von Kutzleben commented on JBTM-1865:
-----------------------------------------------
@Tom:
It turned out now, that closing this ticket was premature.
I have changed the exception to the generic XAException.XAER_RMERR and the symptom is the same.
Mark has argued, that a HeuristicMixedException should be thrown then (see discussion in JBTM-1866),
but I do still get a EJBTransactionRolledbackException, and one branch is actually committed.
So according to your arguments, that is clearly a bug, and a HeuristicMixedException should be thrown.
Could you please reopen this issue?
Debug output pasted below.
Thank you!
Christian
16:58:48,126 INFO [stdout] (EJB default - 5) ### prepare called on 1881524688 with < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:37, subordinatenodename=null, eis_name=unknown eis name >
16:58:48,136 INFO [stdout] (EJB default - 5) ### prepare called on 1088729141 with < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:3a, subordinatenodename=null, eis_name=unknown eis name >
16:58:48,151 INFO [stdout] (EJB default - 5) ### prepare called on 1710000347 with < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:3d, subordinatenodename=null, eis_name=unknown eis name >
16:58:48,156 INFO [stdout] (EJB default - 5) ### commit called on 1881524688 with < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:37, subordinatenodename=null, eis_name=unknown eis name >
16:58:52,641 WARN [com.arjuna.ats.jta] (EJB default - 5) ARJUNA016036: commit on < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:37, subordinatenodename=null, eis_name=unknown eis name > (com.versant.odbms.XAResourceImpl@7025c9d0) failed with exception $XAException.XAER_RMERR: com.versant.odbms.VersantXAException: Commit error: Network error on database [jpadb1@localhost].
at com.versant.odbms.XAResourceImpl.getResult(XAResourceImpl.java:557) [versantjpa-2.0.jar:]
at com.versant.odbms.XAResourceImpl.commit(XAResourceImpl.java:141) [versantjpa-2.0.jar:]
at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelCommit(XAResourceRecord.java:451)
at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2732)
at com.arjuna.ats.arjuna.coordinator.BasicAction.doCommit(BasicAction.java:2648)
at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Commit(BasicAction.java:1813)
at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1504)
16:58:52,646 INFO [stdout] (EJB default - 5) ### rollback called on 1088729141 with < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:3a, subordinatenodename=null, eis_name=unknown eis name >
16:58:52,651 INFO [stdout] (EJB default - 5) ### rollback called on 1710000347 with < formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffffc0a80954:-38731f8:51f9261d:35, node_name=1, branch_uid=0:ffffc0a80954:-38731f8:51f9261d:3d, subordinatenodename=null, eis_name=unknown eis name >
16:58:52,656 ERROR [org.jboss.as.ejb3.invocation] (EJB default - 5) JBAS014134: EJB Invocation failed on component ReconnectTestBean for method public abstract long com.versant.jpa.j2ee.jboss.beans.ReconnectTestBeanRemote.modifyAndStopDbBeforeCommit(com.versant.jpa.j2ee.jboss.entities.J2EEBook,com.versant.jpa.foundation.Option,int): javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:114) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:94) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:252) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
...
Caused by: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1177)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:91) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
... 30 more
> Transaction reported to be rolled back, although committed with one participant
> -------------------------------------------------------------------------------
>
> Key: JBTM-1865
> URL: https://issues.jboss.org/browse/JBTM-1865
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, I'll file the second issue shortly and update this ticket accordingly.
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the first database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> But now things go awry:
> 1. There is a XAResource.rollback() issued to the second XAResource.
> 2. The client receives a EJBTransactionRolledbackException, although
> one branch has been completed.
> Note, that our database does not support heuristical completion of a branch at all, i.e. there should be no Heuristic* exception be thrown either.
> The correct behavior is, to report the transaction as success to the client, commit all branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Mark Little (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Mark Little commented on JBTM-1866:
-----------------------------------
Christian, now I will follow my own request: any further conversation should happen on the forums. If you want to pursue then please take this there.
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Mark Little (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Mark Little commented on JBTM-1866:
-----------------------------------
Christian, I also suggest you go and read the OTS specification from the OMG. Here's a snippet:
"A heuristic decision is a unilateral decision made by one or more participants in a transaction to commit or rollback updates without first obtaining the consensus outcome determined by the Transaction Service. A participant can only make a heuristic decision once the two-phase-commit protocol has begun, in particular it cannot make such a decision if it receives a rollback without a previous prepare. Heuristic decisions are normally made only in unusual circumstances, such as communication failures, that prevent normal processing. When a heuristic decision is taken, there is a risk that the decision will differ from the consensus outcome, resulting in a loss of data integrity."
And if you read all of it you will see that heuristic decisions are not necessarily just thrown (caused) by a single RM. I've already given this example, but I'll repeat: 2 RMs in the commit list, both prepare successfully and the coordinator logs the intention to commit; during the 2nd phase of 2PC if the 1st RM commits and the 2nd rolls back then we have a heuristic (HeuristicMixed). A heuristic decision that is reported by the coordinator to the client indicates that we have a non-atomic outcome.
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Christian von Kutzleben (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Christian von Kutzleben commented on JBTM-1866:
-----------------------------------------------
Mark,
it's neither in the XA spec, nor the JTA spec. Please point me to the specs you're referring to, preferably with a section or page
reference, and I'll be glad to read that.
Christian
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Mark Little (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Mark Little commented on JBTM-1866:
-----------------------------------
Christian, even if all participants agree to prepare and the coordinator logs this fact it does not mean that the transaction will commit. It's nice that your DB doesn't allow heuristics internally, but that does not mean that a heuristic can be avoided if two instances decide to make different decisions. The specifications are very clear on this and we always follow the specifications/standards.
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Christian von Kutzleben (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Christian von Kutzleben commented on JBTM-1866:
-----------------------------------------------
Mark,
it's getting a bit heated here, I've sent you and Tom an email offline.
Also you quoted me wrong again:
I said, the transaction will commit, when the prepare phase is through (and all decided for commit),
I did not say, the transaction will commit, if one participant said so.
Christian
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Mark Little (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Mark Little commented on JBTM-1866:
-----------------------------------
It does not contradict what Phil and the others wrote in their book. Please go and re-read heuristics and why they were introduced. Also take this to the transactions forum. Check out http://qconlondon.com/dl/qcon-london-2010/slides/MarkLittle_TransactionsO... as you may find that useful.
And finally I will repeat: just because a participant says it has prepared DOES NOT MEAN THE TRANSACTION WILL COMMIT. If that were the case then we wouldn't need the 2nd phase of the 2PC protocol because apparently all of the prepared resources will commit and somehow (maybe through ESP?) know that all other resources will also commit.
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1866) HeuristicMixedException reported to client, although backends don't support heuristic completion
by Tom Jenkinson (JIRA)
[ https://issues.jboss.org/browse/JBTM-1866?page=com.atlassian.jira.plugin.... ]
Tom Jenkinson closed JBTM-1866.
-------------------------------
> HeuristicMixedException reported to client, although backends don't support heuristic completion
> ------------------------------------------------------------------------------------------------
>
> Key: JBTM-1866
> URL: https://issues.jboss.org/browse/JBTM-1866
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> this bug is related to:
> https://issues.jboss.org/browse/JBTM-1865
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, the other
> issue is filed as JBTM-1865
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the second database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> The first branch was successfully committed (as it should be spec.)
> But now things go awry:
> 1. The client receives a HeuristicMixedException, although the backend
> does not support heuristic completion at all, i.e. there should be no Heuristic* exception be thrown
> The correct behavior is, to report the transaction as success to the client, commit all other branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months
[JBoss JIRA] (JBTM-1865) Transaction reported to be rolled back, although committed with one participant
by Tom Jenkinson (JIRA)
[ https://issues.jboss.org/browse/JBTM-1865?page=com.atlassian.jira.plugin.... ]
Tom Jenkinson closed JBTM-1865.
-------------------------------
> Transaction reported to be rolled back, although committed with one participant
> -------------------------------------------------------------------------------
>
> Key: JBTM-1865
> URL: https://issues.jboss.org/browse/JBTM-1865
> Project: JBoss Transaction Manager
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Transaction Core
> Affects Versions: 4.17.4
> Reporter: Christian von Kutzleben
> Assignee: Tom Jenkinson
>
> While testing recovery and transaction failures we came across
> two related issues, the test scenario is almost the same, I'll file the second issue shortly and update this ticket accordingly.
> Scenario:
> 2 enlisted XAResources (one for each database used by the test),
> The prepare phase is successful.
> We crash the first database server during the XAResource.commit invocation,
> _after_ it has committed it's branch, right before the control flow would return to the XAResource (which as a result throws a XAException.XA_RBCOMMFAIL).
> The TM can not know at this point in time, whether the database successfully committed the transaction or not. In this particular case, all changes have been committed.
> By definition of the 2PC protocol, the transaction should be considered as "to be committed", because the prepare phase has ended successfully.
> But now things go awry:
> 1. There is a XAResource.rollback() issued to the second XAResource.
> 2. The client receives a EJBTransactionRolledbackException, although
> one branch has been completed.
> Note, that our database does not support heuristical completion of a branch at all, i.e. there should be no Heuristic* exception be thrown either.
> The correct behavior is, to report the transaction as success to the client, commit all branches. All XAResources which failed during XAResource.commit() are supposed to be recovered in future.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 5 months