[DB-SIG] Two-phase commit API proposal (was Re: Any standard for two phase commit APIs?)
M.-A. Lemburg
mal at egenix.com
Mon Jan 21 13:19:25 CET 2008
On 2008-01-21 13:10, James Henstridge wrote:
> On 21/01/2008, M.-A. Lemburg <mal at egenix.com> wrote:
>> Thanks for the explanations. I was actually thinking of the
>> connection between the TM and the RM (the database backend).
>> The typical behavior of a TM is to cancel the ongoing
>> two-phase commit transaction if an RM becomes unavailable.
>
> Stuart's use case is if the RM dies during the second phase of the
> commit. It is an edge case, but then 2PC is all about edge cases :)
>
> If it happens before that point, then rolling back is appropriate.
>
>
>> However, I can see your point. If the data stays on the
>> database server and can be addressed via the XID, then a
>> dropped connection wouldn't hurt all that much.
>> Then again: how do you tell the database to forget about
>> the data stored for an XID ?
>
> You ask for the transaction to be rolled back (e.g. "ROLLBACK PREPARED
> xid" in PostgreSQL, and "XA ROLLBACK xid" for MySQL).
Sorry, I wasn't clear enough:
If a connection fails and the transaction XID persists, how do you:
* identify which XIDs are still pending (xa_recover)
* tell the RM to drop all resources associacted with an XID
(xa_forget)
once the TM has reconnected. These APIs appear to be needed
in order for the TM to be able to cleanup the RM after e.g.
a lost connection.
OTOH, perhaps just doing a rollback with the known XID and
ignoring any errors would do the same without the need for
extra APIs.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Jan 21 2008)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
More information about the DB-SIG
mailing list