- From: Geoffrey M. Clemm <gclemm@tantalum.atria.com>
- Date: Thu, 19 Aug 1999 10:03:39 -0400
- To: ccjason@us.ibm.com
- Cc: w3c-dist-auth@w3.org
From: ccjason@us.ibm.com
<JC> ... The point is whether
a LOCK that is rooted (singleton or not) at the destination
URI survives. </JC>
<gmc>
I see at least two reasons in favor of deleting the lock:
- A MOVE/COPY just does a regular delete (with deletion of all locks),
rather than a "special delete" which deletes all locks except for the
one rooted at the destination URI.
- The MOVE/COPY protocol doesn't have to deal with the complexity of
applying the old lock to the new resource. I can easily imagine the
creation of certain types of locks that only apply to certain types of
resources. The MOVE/COPY protocol would then have to deal with all
the error conditions that LOCK has to deal with.
</gmc>
<jc> The first reason would not be significant if we added the
optional capability into DELETE that I suggested. I pointed out
why it would be useful to add this capability to DELETE.
<gmc/> I agree that adding the capability to DELETE would be more
uniform than special-casing it for MOVE, but I'd prefer not having
it in either case (for simplicity).
The second problem would also be possible if the parent of the destination
had a depth lock that was in conflict with the new resource(s) at the
destination. If such class of locks exist, then
the checking needs to be there anyway. Just one more lock to
check. (Similar argument to what you use below... except
supporting the opposite position.)
</jc>
<gmc/> I advocate removing "depth" locking from the spec
(in the "Locking: Implementation Considerations" thread)
for other reasons.
<gmc/> In general, I am against all bits of the
protocol which cause a lock to be "inherited", since this forces
all the "resource creation" methods to have to deal with all
the "LOCK" failure cases. So I'm against:
- depth locking
- lock-null resources
- keeping the lock on the destination of a MOVE/COPY
<JC> ... A scenario is... /a/b exists
and is a resource... not a collection. We want to replace it
with a new resource that is a collection.
Now if one wants to accomplish this atomically (with
LOCKS), right now one has several choices. ...
<gmc> I think this is better handled by just saying (as suggested by
Yaron) that a COPY/MOVE should be performed atomically, and not bother
with trying to use locking to achieve atomicity of COPY/MOVE. </gmc>
<JC>
This wouldn't be addressing the issue of atomicity of the COPY/MOVE...
although it would achieve that. It would be addressing the atomicity
of the COPY/MOVE followed by something else if the client wanted it.
I don't believe that LOCK's are a good technique for achieving
atomicity of an arbitrary set of operations following the COPY/MOVE.
The main problem is that a LOCK is a very coarse form of control, i.e.
none of the properties or bodies of any of the members of a depth infinity
lock can be modified by anyone. In a distributed authoring context,
I believe an optimistic "modify/merge" paradigm scales much better.
As long as the MOVE/COPY operations are atomic, you can perform all your
changes in a personal copy, and then MOVE/COPY the result to its final
destination.
This capability addresses the same
need that lock-null resources do now. Without them, you'd have to
create the resource and then lock them and then do whatever else
you had in mind. That's why I suggest that if we don't want this
capability, we have to wonder about lock-null resources.
</JC>
I agree, and am against lock-null resources. I believe the
protocol could be simplified with very little loss of functionality
by just saying that if you want to achieve the effect of a lock-null
resource, you just create an empty resource (e.g. a resource with
an empty body) and then lock that real resource.
So to summarize, I'm in favor of:
- deleting lock-null resources from the spec
- deleting depth locking from the spec
- otherwise leaving alone the current wording in the spec
of the effect of delete/move on locks
Cheers,
Geoff
Received on Thursday, 19 August 1999 10:03:41 UTC