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

Michael Kerrin michael.kerrin at openapp.biz
Thu Mar 2 16:58:50 EST 2006


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. 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 and like yourself I am going to quite busy over the 
next few weeks so it will probably be slow in coming. But I would appreciate 
what you think about this particular use case.

Some background: The current webdav spec RFC2518 will hopefully be deprecated 
in the next few months. The new specification which has just in the last 
fortnight gone into last call stage of development, contains a near rewrite 
of the locking sections to make things easier (so they say), especially 
relating to the lock null resources and locks on collections. And I am aiming 
at implementing these features as it is what apache does and I get the 
impresion that the writers of the spec have clearly learned from past 
problems implementing this feature.

But one thing the new spec goes into that zope.locking doesn't have (I don't 
think) is when you lock a collection with infinite depth. The new 
specification says that the collection and all the descendents objects are to 
locked against one lock token. The collection been locked is called the 
"lockroot" and all descendent objects are then indirectly locked against this 
lock token. The specification goes on to say that if an object is added to 
such a locked folder then it is also automatically indirectly locked against 
the same lock token has the folder. Any successful unlock operation on a 
locked object must also unlock all resources associated with this lock token.

(Sorry I the previous paragraph isn't completely clear but section 6.1 and 7.4 
of http://www.ietf.org/internet-drafts/draft-ietf-webdav-rfc2518bis-14.txt
explains this feature a lot better if I didn't make sense)

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

> If Jim successfully gets zc.sharing open sourced today then we have
> some zope.locking/zc.sharing integration that (as one integration
> option for zope.locking tokens) can filter so that only people with
> locks have edit privileges.  It seems to work pretty well, but it's
> also just one way to use the zope.locking tokens.  As with
> zope.app.locking, the "locks" themselves are purely advisory until
> you put in some code to make them enforced somehow.
Can't wait.

> zope.locking can do exclusive lock tokens, shared lock tokens, freeze
> tokens (effectively, no one gets the lock), and can also support
> custom tokens if you need them.

Cheers,
Michael
-- 
Michael Kerrin

55 Fitzwilliam Sq.,
Dublin 2.

Tel: 087 688 3894


More information about the Zope3-dev mailing list