-----BEGIN PGP SIGNED MESSAGE-----
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
> 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).
> 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 ?
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
-----END PGP SIGNATURE-----
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org