-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
Dieter Maurer wrote: > Christian Heimes wrote at 2005-4-1 22:28 +0200: > >>... >>You want to bind some actions to the transaction system because you want >>to execute some code at the end of the first phase of the 2 phase >>commit. > > > I do not think that Florent wants to execute things at the end > or in the first commit phase. Instead, he wants to execute something > *BEFORE* this phase. > That was the initial idea in our case. > >>Hooking into the transaction machinery of ZODB is very easy. Write >>your own DateManager implementing the IDateManager interface and >>register it into the current transaction using get_transaction.register(DM). >> >>For your use case overwrite the tpc_vote() method of the data manager to >>do the indexing at the boundary between the two phases. > > > This will not work for Florent's use case, > at least not in the current ZODB (for Zope 2.7). > > Reason: > > The transaction freezes the set of objects it processes > in the commit *BEFORE* the first commit phase. > > Therefore, no "tpc_vote" is allowed to modify any persistent > object. Failure to do so leads to extremely nasty > persistency errors (the object is marked changed but > no transaction knows about it -- no change to this object in the future > will get persisted until a restart). > > I've been implementing a IndexationManager hook doing the job for CPS but I get the error your talking about... Thanks Dieter for the explanation. Your mail just arrived when I was trying to understand the persistency problems :( I got POSKeyError, Unauthorized (at catalog level while indexing and trying to get object attributs) or KeyError (Connection.setState()) exceptions randomly as well. Is there a way to hook before the first transaction commit phase ? J. - -- Julien Anguenot | Nuxeo R&D (Paris, France) CPS Plateform : http://www.cps-project.org mail: anguenot at nuxeo.com; tel: +33 (0) 6 72 57 57 66 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org iD8DBQFCUFReGhoG8MxZ/pIRAi2jAJ4hXTAJhqJB8czSkQpVCCBEKzWXtACfXA/m S4JfeBF+TWweLWPSoxobPEE= =8zPL -----END PGP SIGNATURE----- _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )