[Zope-dev] deciding whether to do work in tpc_vote or tpc_finish

Laurence Rowe l at lrowe.co.uk
Tue Jun 8 08:07:14 EDT 2010


On 8 June 2010 12:59, Chris Withers <chris at simplistix.co.uk> wrote:
> Laurence Rowe wrote:
>>
>> it fails you will end up in an inconsistent state whatever. It's just
>> that with the maildir implementation, it pretty much can't fail as it
>> is only a rename and that should always succeed. Really, it should
>> register as an after commit hook instead.
>
> How do I do that?

transaction.get().addAfterCommitHook(callable, args, kwargs)

> Since the data manager I'm working on is for a transcation message sending
> implementation, maybe it should be an after commit thing too?
>
> My other thought was to have it commit the message send in tpc_vote, and
> make sure it sorts before zope.sqlalchemy. That way, if the message send
> fails, the "transaction" will be aborted, and that will include rolling back
> the zope.sqlalchemy session rather than committing it.
>
> Views?

In that case if the sqlalchemy commit fails, you still sent the message.

Laurence


More information about the Zope-Dev mailing list