[ZODB-Dev] Ordering before commit hooks

Julien Anguenot ja at nuxeo.com
Mon Aug 29 08:35:02 EDT 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jim Fulton wrote:
> Tim Peters wrote:
> 
>> [Tim]
>>
>>> ...
>>> Julien provided links to code that already uses the new feature:
>>>
>>> """ As an Indexation Manager :
>>> http://svn.nuxeo.org/trac/pub/file/CPSCore/trunk/IndexationManager.py
>>>
>>> As an Event Manager :
>>> http://svn.nuxeo.org/trac/pub/file/CPSSubscriptions/trunk/EventManager.py
>>>
>>> """
>>>
>>> He appears to use (just) two distinct `order` levels there, and seems
>>> just to want to make sure one class of hook gets run before the other
>>> class of hook.  The new scheme does give an easy way to do that.
>>
>>
>>
>> OTOH, while picking levels of -100 and 100 works for that specific use
>> case,
>> looks like it threatens to become a mess if multiple subsystems try to
>> use
>> this scheme simultaneously.  For example, someone who wants to be "the
>> last
>> kind of hook invoked" has no way to force that, at least not short of
>> passing sys.maxint as the `order`.  But if that's what's needed,
>> `sys.maxint` is a strange way to spell it.
>>
>> Jim still wonders, and he got me wondering too, whether the `order=`
>> gimmick
>> is really needed.  For example, you could have gotten to the same end
>> here
>> with the old method, by registering your actions with an object of
>> your own
>> creation, and registering just one commit hook with the transaction,
>> where
>> that one hook looked at the actions you registered with your own
>> object and
>> ran them in whatever order _it_ determined was best.  The ordering logic
>> would have been out of ZODB then, not limited to what an integer
>> `order` can
>> express, and might even benefit from "ah, if I have to run A, then
>> there's
>> no need to also run B or C" kinds of optimizations.
> 
> 
> Minor note, AFAICT, Julien really only needed to assure that his event hook
> ran last.  He could have done this easily without the order feature by
> registering
> an intermediate hook that registered the event hook when it was called.

Sure Jim. I could have done this but this is something that, I find,
would be overkill for such a simple use case.

> 
>> I'm inclined to agree with Jim that `order=` wasn't needed; that it
>> was too
>> general for the specific use case we've seen; and that it's not general
>> enough for plausible other use cases.
> 
> 
> Another way to say this is that it pushes application policy into ZODB.
> Different applications will likely need other policies.

(see my previous post to Tim) I called it documentation but I ment
policy which removes the hook registration order ranges problems  Tim
mentionned.

	J.


- --
Julien Anguenot | Nuxeo R&D (Paris, France)
CPS Platform : http://www.cps-project.org
Zope3 / ECM   : http://www.z3lab.org
mail: anguenot at nuxeo.com; tel: +33 (0) 6 72 57 57 66
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFDEwD1GhoG8MxZ/pIRAgNNAJ9n8Mij4N9CCvDBoNNJezIfhhYpggCfY9uf
1Mn9hELPFBoYgWD8IVaHuGg=
=vBTh
-----END PGP SIGNATURE-----


More information about the ZODB-Dev mailing list