Hash: SHA1


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).
> 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 ?


- --
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
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

For more information about ZODB, see the ZODB Wiki:

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

Reply via email to