Mark Little [
http://community.jboss.org/people/marklittle] created the discussion
"Re: Remoting Transport Transaction Inflow Design Discussion"
To view the discussion, visit:
http://community.jboss.org/message/621472#621472
--------------------------------------------------------------
"I mean that I haven't addressed the issue of transaction timeout control."
What issues? The timeout is controlled by the coordinator, not the client. Or by
"control" do you mean setTimeout calls?
"Keeping in mind that this is nowhere near the only process of this complexity to be
tested - and no, don't trot out "it's more complex than you think"
unless you want to enumerate specific cases (which will probably then be appropriated into
additional tests) - I think we'd follow the same approach we'd follow for testing
other things. We'd unit test the protocol of course, and test to ensure that the
implementation matches the specification, and verify that the protocol handlers on either
"end" forward to the proper APIs."
Go take a look at the QA tests for JBossTS. You'll see that a sh*t load of them are
covering recovery. And then take a look at XTS and REST-AT. You'll see that a sh*t
load of them are covering recovery. Want to take a wild stab in the dark why that might be
the case ;-)? Yes, it's complex. It's got to be fault tolerant, so we have to test
all of the cases. There are no edge-cases with transactions: it either works or it fails.
Unit tests aren't sufficient for this.
"That's just another way of saying we don't have any special, magical
auto-recovery "stuff" that isn't provided by the transaction coordinator
(which might well have some magical auto-recovery "stuff"). There might be a
better way to express that."
Let me try and rephrase and let me know if I get it wrong: you assume that existing
recovery approaches are sufficient for this and nothing new will need to be invented?
"In case 1, the client has no TM and it uses a remote UserTransaction interface to
directly control the remote TM. In case 2, the client is using the local TM to control
transactions, and is treating the remote TM as an enrolled resource into the current
transaction."
Yeah, so it's interposition. Like I said, these are two difference scenarios.
"Case 1 cannot be made to work when a local TM is present without adding some notion
in the EE layer to determine whether it should use the local UserTransaction or the remote
one. This is possible but is a possibly significant amount of work."
How significant? If we're putting all options on the table then this needs to be there
too.
"Theoretically each successive "step" will treat the TM of the subsequent
"step" as a participating resource. As to D calling A, that will only work if
the TM is clever enough to figure out what's happening (I don't see why it
wouldn't as the Xid should, well, identify the transaction so A should recognize its
own; but that's why we're having this discussion)."
Please go take a look at what we have to do for interposition in JTS. And it's not
because JTS is more complex than it needs to be: interposition is a fundamental concept
within distributed transactions and the problems, optimisations, recovery semantics etc.
are there no matter what object model or distribution approach you use. Take a look at XTS
too, for instance.
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/621472#621472]
Start a new discussion in JBoss Transactions Development at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]