]
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
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: