[ZODB-Dev] Re: [Zope-dev] Re: post publishing hook
Julien Anguenot
ja at nuxeo.com
Sun Apr 3 16:38:54 EDT 2005
-----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-----
More information about the ZODB-Dev
mailing list