[Zope-dev] Bulletproof ZCatalog proposal
Phillip J. Eby
pje@telecommunity.com
Fri, 08 Jun 2001 17:21:11 -0400
At 04:58 PM 6/8/01 -0400, Shane Hathaway wrote:
>On Thursday 07 June 2001 21:28, Phillip J. Eby wrote:
> > 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?
Before. I'm saying this would take place immediately at the start of the
existing Transaction.commit() method.
> > 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.
I think I'll wait until ZPatterns works with Zope 2.4, unless it becomes
necessary otherwise. Replacing what I've got now is a pretty significant
undertaking, and risk-prone to boot, so I don't want to delay the finishing
of ZPatterns' support for Zope 2.3.x.
Basically, the runtime patch would be to replace
ZODB.Transaction.Transaction with a subclass that implemented the
notification queues in the commit() method. There'd be a few other little
extensions needed, like clearing the queues on any abort operation, and
adding registerIndex() and registerRule() or some such methods.