Re: deciding whether to do work in tpc_vote or tpc_finish
Chris Withers <[email protected]>
| Newsgroups | gmane.comp.web.zope.devel |
|---|---|
| Message-ID | <[email protected]> |
Laurence Rowe wrote: > On 8 June 2010 09:51, Chris Withers <[email protected]> wrote: >> Hi All, >> >> I need to write a data manger that interacts with a transactional system >> that doesn't support two phase commit. >> >> Looking for inspiration, I went to look at zope.sqlalchemy and >> zope.sendmail. >> >> In the non-tpc situation, the former does the "commit" in tpc_vote while >> the latter does it in tpc_finish. >> >> Which is "right"? What are the tradeoffs involved? > > Committing in tpc_vote is right so long as you ensure your data > manager sorts last, and that there are no other data managers in the > transaction which are using the same trick. See: > https://mail.zope.org/pipermail/zodb-dev/2007-May/010996.html > > For zope.sendmail, committing in tpc_finish makes sense, especially > when using QueuedMailDelivery because enqueuing the message in the > maildir is guaranteed to succeed (the file is just renamed on commit). > Any failure here would lead to a critical error and inconsistent state > between the transactional resources. Okay, I see the two different cases. What's the recommended course of action when you end up with two data managers where tpc_vote is the "right" place to implement? cheers, Chris _______________________________________________ Zope-Dev maillist - [email protected] https://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - https://mail.zope.org/mailman/listinfo/zope-announce https://mail.zope.org/mailman/listinfo/zope )