[Zope-dev] Bulletproof ZCatalog proposal
Shane Hathaway
shane@digicool.com
Fri, 8 Jun 2001 16:58:58 -0400
On Thursday 07 June 2001 21:28, Phillip J. Eby wrote:
> Yep. One of the last two times I spoke with Jim in person (either
> the January DC visit or IPC 8, I forget which), he said something
> about it maybe being a good idea to have some kind of priority system
> like that. I'd love to see something like it exist, if it would make
> some of ZPatterns' hackery unnecessary.
Yes, I would too. I'm happy to see we're in complete agreement.
> The implementation could consist of two subscription queues:
> ruleAgents and indexingAgents. ZCatalog would register in
> indexingAgents, and ZPatterns objects would register in one or the
> other, usually ruleAgents. (I can think of some circumstances where
> it would be nice to use the indexingAgents queue, but right now
> ZPatterns apps have to work around this by defining their rules in
> execution priority order.)
Ah-ha, this is sounding familiar. You talked about rule agents and
indexing agents in the ZPatterns wiki.
> Upon being told to perform a transaction or subtransaction commit,
> the transaction would notify all the ruleAgents, and then all the
> indexingAgents. Objects could still subscribe to either queue while
> this notifying is taking place. (So that triggered actions could
> cause indexish objects to register as indexingAgents, not to mention
> causing updated objects to fire additional triggers.)
>
> Once all agents in a queue are notified, that queue should be cleared
> so that notifications are on a per-subtransaction basis. Once both
> queues are cleared, normal transaction behavior goes forward.
Would you say this would occur before tpc_begin() messages or just
after?
> Hm. That's simpler than I thought it was going to be. Shoot, I can
> even see how to implement it as a runtime patch, that would've been
> simpler than all the shenanigans ZPatterns goes through to fake out
> the transaction machinery... and it's a better
> implementation. Ah well. At the time I wanted to avoid trying to
> convince Jim to add machinery to transactions "just" for ZPatterns,
> given that ZPatterns wasn't a particularly established product at the
> time.
>
> Let me know if you guys put something like this in, though, and I'll
> definitely look at reworking ZPatterns to use the mechanism. It
> could potentially cut a lot of code out and improve the robustness at
> the same time.
I don't foresee us adding this capability right away since we need to
understand it better and it only applies to one working product and a
hypothetical product. I'd suggest you go ahead with the runtime patch.
Shane