- From: Sohn, Matthias <matthias.sohn@sap.com>
- Date: Mon, 18 Mar 2002 16:48:11 +0100
- To: "Ietf-Dav-Versioning@W3. Org" <ietf-dav-versioning@w3.org>
I think when the resource version to be revived in order to
undelete the resource has been found the undelete operation can be
done in the following way :
- check out the collection which shall contain the resource to be
undeleted,
Yes.
this yields a working collection which is bound to an activity
(since I want to track all changes in activities)
Yes.
- issue VERSION-CONTROL on the resource version contained in the
old collection version before the deletion of the resource took
place
A collection version does not contain resource versions, it contains
a DAV:version-controlled-binding-set property that contains a set of
name/version-history pairs.
Sorry it seems that my sentence was too sloppy.
- I meant that by using some report provided by my server I can find out
to which version of the deleted resource the VCR has pointed to just
before the resource has been deleted.
- Since the resource has been deleted before the undeletion is done
there is no VCR for the version history of the deleted resource in
my workspace. By issueing VERSION-CONTROL on the version I want to put
back to life I thought I can create a new VCR in the checked out collection
(which belongs to my workspace) which will then point again to the
same version the old VCR pointed to before it has been deleted.
Also, you don't issue VERSION-CONTROL requests to members of
a working
collection, because a working collection does not contain
version-controlled resources (and VERSION-CONTROL creates a
version-controlled resource). The VERSION-CONTROL request is used to
restore resources to checked-out collections (i.e. to
collections that
can be checked-out in place), not to working collections.
I don't want to issue VERSION-CONTROL to a member of the working
collection but to the resource version I want to revive in order
to create a new VCR for it. This version I found using a report.
I only want to checkout the target collection in order to allow the
recreation of the resource (which shall become a member of
the checked out collection).
In this request specify the URL under which the VCR for
the resource to
be
undeleted shall reappear.
- check in the activity containing the working collection
which now has a
binding pointing to the newly created VCR for the
undeleted resource.
Working collections cannot contain a VCR.
- if since the resource has been deleted another resource has been
created
with the same URL the VERSION-CONTROL request given
above will fail.
In this case the client has to reissue VERSION-CONTROL
specifying
another request URL which uniquely identifies the URL
of the resource
to be undeleted.
Is this approach compliant to the DeltaV spec ?
No, with working resources, you have to CHECKOUT a collection version
that identifies the version history of the desired version in its
DAV:version-controlled-binding-set. Then you can MOVE that version
history from that working collection into the destination working
collection, DELETE the source working collection, and then CHECKIN
the destination working collection.
Huh, I feel this partial move is ugly.
First this needs 5 requests to do a simple undeletion:
- two CHECKOUTs (of the source and target collection versions)
- (partial) MOVE
- DELETE (or UNCHECKOUT) on the source working collection
- and a CHECKIN on the target collection.
In addition this would require that MOVE is not an atomic
operation (either done completely or not at all). If MOVE is
not atomic I expect that the probability of inconsistencies
on the server will increase if some client issues a similar
partial MOVE for a different purpose. Since we use a stateless
protocol it's no option for the server to wait for the DELETE
and CHECKIN until the transaction doing the MOVE is committed.
Without waiting for DELETE and CHECKIN the server has no chance
to find out that this request sequence is an undelete operation
(which should be atomic as well).
I would prefer if there is some solution which only needs CHECKOUT
and CHECKIN of the target collection (this seems to be necessary
with versioned collections) and only one atomic command (e.g. UNDELETE
or VERSION-CONTROL with additional semantics) which does recreate
the deleted VCR and ensures that the same version is revived which
has been in the workspace just before the resource has been deleted.
This would mean 3 requests instead of 5, less chance for
inconsistencies (since MOVE is atomic) and clearer semantics
for the sake of an additional method (or additional semantics
for VERSION-CONTROL ?).
Received on Monday, 18 March 2002 10:48:47 UTC