Subject: RE: Move and Delete (was: bind draft issues)

From: "Clemm, Geoff" <[email-masked]>
Date: Mon, 3 Mar 2003 18:34:11 -0500

"Best effort" deletion is forbidden by the bind protocol,
because it can cause a DELETE in one collection to cause a change
in another collection, and this kind of "deletion side effect"
was something we explicitly were trying to avoid.  For example,
suppose /henry/has-friend/jeff and /jim/has-friend/jeff
were bindings to the same collection, JEFF, and JEFF has a binding
named "wife" to a resource, MARI.  Now suppose henry gets mad
at jeff, and issues a "DELETE /henry/has-friend/jeff" request.
But suppose at that moment someone else has a Depth:0 lock
on the /henry/has-friend collection.  The result of a "best effort"
deletion is the removal of the "wife" binding from JEFF.  That
may be OK if you were just updating the information accessible
from /henry (he isn't JEFF's friend anymore, and he's happy to
purge as much information about JEFF as he can), but with multiple
bindings, "best effort" deletion has now trashed the JEFF object
in all the other contexts in which it is still visible (and the
folks that still are his friends are still interested in that
information).

So we're not saying that "best effort deletion" is always a bad thing,
but we are saying that "best effort deletion" is a bad thing when
you care about multiple bindings to the same resource.

Cheers,
Geoff

-----Original Message-----
From: Julian Reschke [mailto:[email-masked]]
Sent: Monday, March 03, 2003 5:08 PM
To: Clemm, Geoff; WebDAV
Subject: RE: Move and Delete (was: bind draft issues)

> From: [email-masked]
> [mailto:[email-masked]]On Behalf Of Clemm, Geoff
> Sent: Monday, March 03, 2003 10:44 PM
> To: WebDAV
> Subject: RE: Move and Delete (was: bind draft issues)
>
>
>
> To emphasize an earlier comment, it is true that the bind protocol
> places constraints on how a server is allowed to implement the DELETE
> and MOVE methods.  In particular, a server that supports the bind
> protocol is not allowed to do a partial MOVE or a partial DELETE (even
> though 2518 allows it).
> ...

Good catch. I remember that we discussed that at some point of time, but it
seems it was never added to the issues list.

Our server indeed is able to support the BIND method and live properties
with all their semantics, yet won't do an atomic DELETE on collections. I
agree that *technically* a server that properly handles bindings *could* do
atomic deletes, but in reality, there may be reasons why you don't *want*
to.

Therefore, I'd like the spec not to require a specific behaviou, or, as a
minimum, change the MUST to a SHOULD.

Julian

--
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760

---

From: Stefan Eissing <[email-masked]>
Date: Tue, 4 Mar 2003 09:45:34 +0100

Geoff,

if I understand you correctly, you're saying that DELETE on a server
with BINDings must always first *unbind* the target (in an atomic
operation, similar to unlink in UNIX)?

I certainly agree that this is the desired behaviour if the delete 
target
has more than one binding.

Question: is it possible to accept a partial sucess DELETE, iff the
resource to be deleted has no other bindings?

//Stefan

Am Dienstag, 04.03.03, um 00:34 Uhr (Europe/Berlin) schrieb Clemm,

---

From: "Julian Reschke" <[email-masked]>
Date: Wed, 5 Mar 2003 01:15:28 +0100

Geoff,

thanks for trying to come up with a scenario that benefits from the current
required semantics. Comments inline.

> Sent: Tuesday, March 04, 2003 12:34 AM
> To: WebDAV

In this case I'd just remove that binding.

The question where we disagree is about the required behaviour when the
collection binding is the last one, i.e. when the server is then free to
remove all internal members.

> deletion is the removal of the "wife" binding from JEFF.  That

Nope. I didn't say that.

> you care about multiple bindings to the same resource.

I'd rephrase that as "best effort deletion of internal members is a bad
thing when you aren't destroying the last binding to the collection". I
agree with that. Where I disagree is whether best effort deletion should be
allowed when the binding that is removed is the last binding to a
collection. In this particular case, I'd prefer to allow RFC2518 behaviour
(if we don't, I don't see how can sell the implementation to my customer
:-).

Julian