On Thu, May 31, 2001 at 04:32:56PM -0400, Anatoly Akkerman wrote:
>
> > > The subordinate transactions (on server2 and server3) call commit() on
> > > their datasources and return their votes to the main coordinator. The
> > > coordinator based on the votes takes a heuristic decision on what to do
> > > about the completion of this transaction. If there were no errors
> > > reported, the TM decides to complete the commit heuristically. So, it does
> > > not throw any exceptions, but tries to tell all the subordinates to
> > > forget() the transaction. This indicated that the last request (commit())
> > > was accepted by everybody and everybody can now forget about this
> > > transaction.
> >
> > I don't see how this can work. What happens if one of the subtransactions
> > fails? I would have thought that the originator would need to use some
> > kind of two-phase protocol to make sure that all of the subtransactions
> > are prepared successfully before asking any of them to commit.
>
> My mistake, of course it calles prepare() and gets the votes then calls
> the commit() and makes a heuristic decision on whether to finish off with
> forget() or to rollback() and then forget(). I am not currently looking at
> the Tyrex source and I am not a transaction specialist myself, so I don't
> remember all the details off hand.
This still doesn't make sense to me, but this conversation isn't getting
anywhere. I'm not going to spend the time necessary to fully understand
this, so I'll leave it to you and any distributed transaction experts that
pop up.
Toby.
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development