[Mono-dev] System.Transactions and 2PC

Raja R Harinath rharinath at novell.com
Wed Nov 15 02:51:18 EST 2006


"Matthijs ter Woord" <matthijsterwoord at gmail.com> writes:

> when looking at the sources of Transaction, I see the EnlistDurable only 
> supports 1 Durable resource manager. Why is this? Shouldn't it be just 
> possible to have multiple of them?

No reason ;-)  Actually, some of the reasons are alluded to in


(I'll have to sit down and make that page a bit more informative.)

Basically, supporting more than one durable resource manager requires
a proper distributed transaction manager.

> Also, regarding 2PC, why isn't this implemented?

It is implemented for volatile resources.

> With the current codebase (ie, only one durable resource manager) it
> should be very easy to implement.  And even with multiple durable
> resource managers, it shoulnd't be that hard.

It isn't too hard: we have some incomplete code from a SoC student --
basically it was just some refactoring of existing code.  However, the
semantics are totally different from Microsoft's implementation.

If you don't depend on proper crash behaviour on durable resource
managers, but are only interested in using them as glorified volatile
resource managers, I think we can support it by checking in the code we
have.  Anything else that requires a proper external transaction manager
with appropriate crash recovery behaviour is beyond our scope [1].

- Hari

[1] But we'll gladly help anyone who's interested in working on it

More information about the Mono-devel-list mailing list