Florent Guillaume wrote:
Jeremy Hylton wrote:

Is there a way to hook before the first transaction commit phase ?

If you register a synchronizer with the transaction manager, it's
beforeCompletion() method will be called immediately before changing
the transaction's state to committing.  This hook was intended in part
to support use cases like "do something magic to the transaction
before it commits."  It looks like the registerSynch() method of the
transaction manager is undocumented, but that is an oversight.

Ok, and I see that beforeCompletion(t) has to check t.status to find out when it is called (if the transaction is ACTIVE it's ok, otherwise it's been called by abort() -- the fact that abort() calls it should probably be documented).

I think that this is not the right mechanism. It's not really intended for application code and is far to complex for what is, IMO, a very simple case.

I'll make a proposal in a separate message.

But as Julien said we'll have to find another way using ZODB 3.2...


You could install your own get_transaction that returned a
wrapper transaction that called before-commit hooks before
calling the real commit.


Jim Fulton           mailto:[EMAIL PROTECTED]       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org
For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to