Hey btw I move that page you had on the advanced user guide to the developer's guide and
filled it in a bit.  Here's the new link in confluence:

http://cwiki.apache.org/confluence/display/DIRxSRVx11/Versioning+and+Snapshots

Alex

On 9/19/07, Alex Karasulu < akarasulu@apache.org> wrote:
FYI the present commits

(1) took the workshop example from the "Embedding ApacheDS" seminar and added it to the server adapting it to the changes.
(2) added some SPI for such a server service for extension
(3) the present interceptor does not use this

There's a bit more work to do to flush out a coherent picture.  I will get this done today and
document it all in the wiki.  I will also modify the existing interceptor to use these interfaces
but it will still not be fully functional since I need to figure out how to implement an anti-ldif
calculation algorithm.

I'll add the convos we have had on IRC so others can back track and also jot down some other
ideas around this facility. 

Alex


On 9/19/07, Emmanuel Lecharny < elecharny@gmail.com> wrote:
Hi guys,

Alex just committed a very interesting new interceptor into the trunk
; the ChangeLog interceptor which was drafted by Ersin a year ago
(more or less).

This new interceptor will be very usefull for many usage, like :
- logging _all_ the requests sent to the server (valuable when debugging)
- defining some kind of journal we can replay if the server just
crashed and we have lost some data (because the data are written on
disk on a regular basis, not synchronously, unless you ask the server
to do so )
- add some kind of snapshot + rollback/commit functionality.

However, we need to polish the code to support all those new functionalities.

Atm, for instance, we can't rollback for two reasons :
1) we have to define some  tags to tell the server from which point we
want a rollback to start
2) we have to save an 'anti-request' data into the log. 'Anti-request'
is just the opposite request sent by the user. For instance, suppose
that the user is adding some entry, the anti-request (A-req) will be a
"DelRequest <added entry DN>". If the user is deleting an entry, the
A-req is a little bit more complex : the interceptor will have to
lookup for the entry first, and save it as a "AddRequest <looked up
entry>". For modify requests and ModifyDN requests, this can bbecome
complex...
3) We also have to define a control or an extended request to set this
tag, and another one to do the rollback or to discard the snapshot.

None of those tasks are complex per se, but we have to add them.

Do you have any other ideas, or opinions ?

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com