- From: Clemm, Geoff <gclemm@rational.com>
- Date: Mon, 7 Oct 2002 08:50:47 -0400
- To: "'Webdav WG'" <w3c-dist-auth@w3c.org>
- Message-ID: <E4F2D33B98DF7E4880884B9F0E6FDEE25CCC@SUS-MA1IT01>
We are about to submit a new ID for the BIND extension, and as part of that work, we are verifying that locking semantics is clearly defined in the presence of multiple bindings to a single resource. The last time we were working on locking for the bind proposal (about 2.5 years ago :-), I submitted a series of GULPs (Grand Unified Locking Proposals), the last of which was V3: <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/0061.html>. The most complex part of this proposal was capturing the semantics of lock-null resources (and was a significant factor in my crusade agains them :-). Happily, now that we have cleaned up locking by removing lock-null resources, we can also significantly simplify the description of write-lock semantics: ************************** Grand Unified Lock Proposal (V4) - A lock is either direct or indirect. - A LOCK request places a direct lock on the resource identified by the request-URL. The "lock-root" of the new lock is the request-URL. - If a request causes a resource with a direct lock to no longer be mapped to the lock-root of that lock, then that lock MUST be removed from that resource. - If a collection has a direct depth:infinity lock with token X, all members of that collection (other than the collection itself) will have an indirect depth:infinity lock with token X. In particular, if a binding to a resource is added to a collection with a depth:infinity lock with token X, and if the resource does not have a lock with token X, then an indirect lock with token X is added to the resource. Conversely, if a resource has an indirect lock with token X, and if the result of removing a binding to the resource is that the resource is no longer a member of the collection with the direct lock with token X, then the lock with token X is removed from the resource. - If a request would modify the content, dead properties, or bindings of a locked resource, the request MUST fail unless the lock-token for that lock is specified in the request. - If a request would remove a lock from a resource, the request MUST fail unless the lock-token for that lock is specified in the request. - If a request would cause two different exclusive locks to appear on the same resource, the request MUST fail. ************************** If you have any locking use cases (no matter how obscure or unlikely) that are not properly covered by this proposal, please let me know. We're especially interested in obscure multiple binding use cases, such as cyclic bindings. Cheers, Geoff
Received on Monday, 7 October 2002 08:51:31 UTC