- From: Tim Ellison <Tim_Ellison@uk.ibm.com>
- Date: Fri, 25 Jan 2002 10:45:45 +0000
- To: "IETF DAV" <ietf-dav-versioning@w3.org>
"Elodie Tasia" <e.tasia@ever-team.com> wrote:
> There's something I find strange for a long time about the
chekout-put-checkin
> mechanism :
> first, you CHECKOUT the resource you want to modify (OK... but you GET
it it
> the same time I suppose... no ?)
> then, you PUT the modified resource (arg ! that, I can't imagine it :
where is
> this new resource, since it may not overwrite the old one ?)
> and then you CHECKIN the resource, so that the server records it as a
new version...
>
> seem maybe very stupid, but I don't care ;o)
A reasonable question...
there is nothing in the CHECKOUT / CHECKIN cycle to prevent the 'lost
update' problem that is addressed by locks. You can think of CHECKOUT and
CHECKIN as state-changes on the resource mutability 'bit'. Where there is
likely to be contention on a resource, the steps to modify a checked-in
version-controlled resource safely will be:
(1) LOCK /foo
locks it so nobody can modify it's content & dead properties. Since
the resource is checked in, it cannot be modified anyway, but the lock is
now in place so that you can...
(2) CHECKOUT /foo
the checkout marks it as mutable, but since it is locked, the resource
content and dead properties can only be modified by clients holding the
lock token. This ensures that nobody else will modify the resource and
you will overwrite their changes (or vice versa).
(3) GET /foo
PROPFIND /foo
yes, if the updated contents or properties are based on the current
values, then you will likely be GETting and PROPFINDing them first.
(4) PUT /foo
PROPPATCH /foo
Now you can modify the resource, passing in the token to indicate you
have the lock on that resource.
(5) CHECKIN /foo
Finally, when you have the resource in a state that you want to commit
to version history, you can check it back in -- which marks it immutable
again.
(6) UNLOCK /foo
Discard the lock to free it up for others to get in and do their
changes. If others had started the update sequence during your update,
they will be stuck at step (1) trying to acquire the lock, and once you
have completed this step they will be free to continue.
Regards,
Tim
Received on Friday, 25 January 2002 05:54:05 UTC