W3C home > Mailing lists > Public > w3c-dist-auth@w3.org > January to March 2006

Re: Issue 202, Lock-Null resources

From: Geoffrey M Clemm <geoffrey.clemm@us.ibm.com>
Date: Sun, 12 Mar 2006 18:59:01 -0500
To: Julian Reschke <julian.reschke@gmx.de>
Cc: WebDAV <w3c-dist-auth@w3.org>, w3c-dist-auth-request@w3.org
Message-ID: <OF47E985FF.6C29AEBA-ON8525712F.00837612-8525712F.0083BD20@us.ibm.com>
I agree with Julian's comments, and support his proposed changes.

Cheers,
Geoff

Julian wrote on 03/12/2006 01:26:37 PM:
> 
> Following up on issue 202 
> (<http://ietf.cse.ucsc.edu:8080/bugzilla/show_bug.cgi?id=202>)...
> 
> I think the current wording in Section 7.3 is extremely confusing, 
> because it describes to different models, of which one is deprecated. 
> Furthermore, it uses way too many words to describe an extremely simple 
> thing (an empty resource that is locked), and gives both models the same 

> amount of room.
> 
> A very simple change to address this issue is to get rid of most of the 
> text, and move the description of the deprecated model into an appendix 
> (and no, an appendix can be normative if it isn't stated otherwise).
> 
> Proposed text below and in 
> <http://greenbytes.de/tech/webdav/draft-reschke-webdav-rfc2518bis-
> latest.html#rfc.issue.bz202>. 
> Also note that in the text to be deleted, the following paragraph...:
> 
>      The client is expected to update the locked empty resource shortly
>      after locking it, using PUT and possibly PROPPATCH.
> 
> ..doesn't make any sense at all. Why "shortly"? What difference does 
> that make?
> 
> 
> Section 7.3., para. 4:
> OLD:
> 
>      The original WebDAV model for locking unmapped URLs created "lock-
>      null resources".  This model was over-complicated and some
>      interoperability and implementation problems were discovered.  The
>      new WebDAV model for locking unmapped URLs creates "locked empty
>      resources".  Servers MUST implement either lock-null resources or
>      locked empty resources, but servers SHOULD implement locked empty
>      resources.  This section discusses the original model briefly and 
the
>      new model more completely, because clients MUST be able to handle
>      either model.
> 
>      In the original "lock-null resource" model, which is no longer
>      recommended for implementation:
> 
>      o  A lock-null resource sometimes appeared as "Not Found".  The
>         server responds with a 404 or 405 to any method except for PUT,
>         MKCOL, OPTIONS, PROPFIND, LOCK, UNLOCK.
> 
>      o  A lock-null resource does however show up as a member of its
>         parent collection.
> 
>      o  The server removes the lock-null resource entirely (its URI
>         becomes unmapped) if its lock goes away before it is converted 
to
>         a regular resource.  Recall that locks go away not only when 
they
>         expire or are unlcoked, but are also removed if a resource is
>         renamed or moved, or if any parent collection is renamed or 
moved.
> 
>      o  The server converts the lock-null resource into a regular 
resource
>         if a PUT request to the URL is successful.
> 
>      o  The server converts the lock-null resource into a collection if 
a
>         MKCOL request to the URL is successful (though interoperability
>         experience showed that not all servers followed this 
requirement).
> 
>      o  Property values were defined for DAV:lockdiscovery and DAV:
>         supportedlock properties but not necessarily for other 
properties
>         like DAV:getcontenttype.
> 
>      In the "locked empty resource" model, which is now the recommended
>      implementation, a resource created with a LOCK is empty but 
otherwise
>      behaves in every way as a normal resource.  It behaves the same way
>      as a resource created by a PUT request with an empty body (and 
where
>      a Content-Type and Content-Language was not specified), followed by 
a
>      LOCK request to the same resource.  Following from this model, a
>      locked empty resource:
> 
>      o  Can be read, deleted, moved, copied, and in all ways behave as a
>         regular resource, not a lock-null resource.
> 
>      o  Appears as a member of its parent collection.
> 
>      o  SHOULD NOT disappear when its lock goes away (clients must
>         therefore be responsible for cleaning up their own mess, as with
>         any other operation or any non-empty resource)
> 
>      o  MAY NOT have values for properties like DAV:getcontentlanguage
>         which haven't been specified yet by the client.
> 
>      o  Can be updated (have content added) with a PUT request.
> 
>      o  MUST NOT be converted into a collection.  The server MUST fail a
>         MKCOL request (as it would with a MKCOL request to any existing
>         non-collection resource).
> 
>      o  MUST have defined values for DAV:lockdiscovery and DAV:
>         supportedlock properties.
> 
>      o  The response MUST indicate that a resource was created, by use 
of
>         the "201 Created" response code (a LOCK request to an existing
>         resource instead will result in 200 OK).  The body must still
>         include the DAV:lockdiscovery property, as with a LOCK request 
to
>         an existing resource.
> 
>      The client is expected to update the locked empty resource shortly
>      after locking it, using PUT and possibly PROPPATCH.
> 
>      Clients can easily interoperate both with servers that support the
>      old model "lock-null resources" and the recommended model of 
"locked
>      empty resources" by only attempting PUT after a LOCK to an unmapped
>      URL, not MKCOL or GET.
> 
> NEW:
> 
>      Alternatively and for backwards compatibility to [RFC2518], servers
>      MAY implement Lock-Null Resources (LNRs) instead (see definition in
>      Appendix D).  Clients can easily interoperate both with servers 
that
>      support the old model LNRs and the recommended model of "locked 
empty
>      resources" by only attempting PUT after a LOCK to an unmapped URL,
>      not MKCOL or GET, and by not relying on specific properties of 
LNRs.
> 
> 
> NEW:
> 
>   Appendix D.  Lock-Null Resources
> 
>      This specification deprecates the "Lock-Null Resources" (LNRs)
>      defined in Section 7.4 of [RFC2518], and replaces them with empty
>      locked regular resources (see Section 7.3).  However, it's still
>      legal for servers to implement the deprecated model.
> 
>      A LNR differs from an empty locked resource in the following 
aspects:
> 
>      o  It MUST respond with a 404 (Not Found) or 405 (Method Not 
Allowed)
>         to any methods except for PUT, MKCOL, OPTIONS, PROPFIND, LOCK, 
and
>         UNLOCK.
> 
>      o  Most of its live properties, such as all the get* properties, 
will
>         have no value as a lock-null resource does not support the GET
>         method.  It MUST have defined values for lockdiscovery and
>         supportedlock properties.
> 
>      o  Until a method such as PUT or MKCOL is successfully executed on
>         the lock-null resource the resource MUST stay in the lock-null
>         state.  However, once a PUT or MKCOL is successfully executed on 
a
>         lock-null resource the resource ceases to be in the lock-null
>         state.  (Note that an LNR thus can be used to create a 
collection,
>         which is not possible with the simplified empty locked resource
>         model anymore.)
> 
>      o  If it is unlocked, for any reason, without a PUT, MKCOL, or
>         similar method having been successfully executed upon it then 
the
>         resource MUST return to the null state.  (Note that with an 
empty
>         locked resource, an empty regular resource would remain in 
place.)
> 
> 
> Best regards, Julian
> 
> 
Received on Sunday, 12 March 2006 23:59:10 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:44:14 GMT