Advisory Locks & DAV:LOCKTYPE Attribute

1.	Advisory Locks

1.1	Problem Definition

In a versioning system that exists in an open, collegial atmosphere
where proper behavior can be reliably expected, it is not necessary to
enforce locks. The absence of enforced locks makes the system easier to
administer as there is no more need for frantic phone calls to the
SysAdmin over the weekend because some key file has accidentally been
left locked by an unavailable principal.

However it is desirable to provide a mechanism whereby system users may
determine if someone is currently editing a file and to be able to cause
system changes to only occur if no one is currently editing a file.

1.2	Proposal

I propose introducing a new value for LockType in the Lock-Info header,
"Advisory". The Advisory attribute is used to indicate that the
requested lock is advisory. This means that the system will not prevent
anyone without a lock from modifying the resource. However the client's
intent in setting such a lock is to provide notification of their desire
to modify the resource. As such the server should only accept Advisory
locks if it makes available the DAV.LockInfo header.
Once a resource has an advisory lock placed on it, it is not possible to
place any other type of lock on the same resource. The same logic
applies to ranged locks.

1.3	Discussion

While the matter is still open, we will be providing an if-match and
if-not-match like feature for lock tokens. So it will be possible to put
a header on a request which tells the server "Only process this request
if no one has locked the resource." This isn't needed for exclusive
write locks as the system is required to enforce proper behavior, but it
is necessary with advisory locks.

2.	DAV:LOCKTYPE Attribute

2.1	Problem Definition

Servers may support any number of lock types. These proposals have
already defined two, exclusive write and advisory. As such a mechanism
is needed to find out what sorts of locks are supported on a resource.

2.2	Proposal

I propose introducing the DAV:LOCKTYPE attribute.
DAV:LOCKTYPE = #LockType
This header lists LockType attributes as defined in the proposal on
locks. Each locktype indicates a type of supported lock.

Received on Wednesday, 26 March 1997 03:29:23 UTC