webdav locking (was Re: [Zope3-dev] Re: [Zope-dev] Two visions)

Gary Poster gary at zope.com
Thu Mar 2 17:27:40 EST 2006


On Mar 2, 2006, at 4:58 PM, Michael Kerrin wrote:

> Hi Gary,
>
> On Wednesday 01 March 2006 15:33, Gary Poster wrote:
>> On Mar 1, 2006, at 10:13 AM, Michael Kerrin wrote:
>>> so it doesn't get to the locking tests (which will fail) but this
>>> is good
>>> thing to aim at :-)
>>
>> Hey Michael.  What are you planning to do with the locking stuff?
>> I'd like to see zope.locking (http://svn.zope.org/zope.locking/)
>> used, rather than zope.app.locking.  It learns from zope.app.locking
>> while also addressing some issues and adding some features.  I don't
>> have time to do much about proposing it and integrating it, though.
>> Maybe I can squeeze in a bit next week or week after.
> Brillant - Locking is next on my hit list, and I am planing on using
> zope.locking to improve the current implementation.

Cool.

> I have an issue with
> zope.locking on a collection with infinite depth but I am planing  
> on ignoring
> this use case for the moment and get the rest of the locking  
> working without
> any infinite depth support[...]

> Any ideas on this?, is it feasible or not within zope.locking?

It seems reasonable, I think.  I'd prefer to do it with some code on  
top of zope.locking--within the webdav package, for instance--but am  
not totally opposed to pushing it down into zope.locking.

The basic idea would be that webdav would use a special kind of lock  
token that marked an infinite depth lock (maybe even just directly  
providing an interface on the existing lock tokens) whenever you  
wanted to make an infinite depth lock.  Then webdav asking "are you  
locked?" for a given object would need to not only ask the object but  
also walk up the parents to ask each of them if they are locked with  
an infinite depth token.  Since the new spec contemplates "sub  
locks"--locks within the infinite lock--it seems to model pretty well.

The only concern I'd have is that making checks like that into a  
security policy might be more work than we would want...although the  
default security policy collects information from the __parent__s, so  
maybe it wouldn't be too bad.

If we did push this down into zope.locking, my current thinking is  
that I'd like to have the transitive lock search be some additional  
API, maybe in a separate interface, and not modify any of the current  
methods.

In terms of code alone, though, this seems very doable, maybe even  
simple. :-)

Gary


More information about the Zope3-dev mailing list