-----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----- _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev