On Apr 4, 2005 10:38 AM, Jim Fulton <[EMAIL PROTECTED]> wrote:
> >> 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 don't have anything invested in the decision, but synchronizers were
intended to support this use case.  They provide a way for arbitrary
application code to observe the transaction boundaries without
pretending to be a data manager.

For more information about ZODB, see the ZODB Wiki:

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

Reply via email to