Hi guys,

I'm trying to implement this control for 1.5.5, and I'm a bit stuck in the way we should handle it in the core server. Right now, the control is decoded (the ASN.1 decoder has been written and tested, it works fine). The SearchHandler has been modified so that we can implement the control in only one case : the doSimpleSearch() method.

The problem I have is the following : we have to remember the pointer to the last entry we have sent back to the client

How should we do ? My first approach was pretty naive : we are using a cursor, so it's easy, we simply store the cursor into the session, and the next request will just have to get back this cursor from the session, and get the N next elements from this cursor.

This has the advantage of being simple, but there are some very important cons : - it's memory consuming, as we may keep those cursor in the session for a very long time - we will have to close all the cursors when the session is closed (for whatever reason) - if some data has been modified since the cursor creation, it may contain invalid data - if the user don't send and abandon search request, those cursors will remain in the session until it's closed (this is very likely to happen)

So I'm considering an alternative - though more expensive and less performant - approach :
- we build a new cursor for each request,
- we move forward the Nth entry in the newly created cursor, and return back the M requested elements
- and when done, we discard the cursor.

The pros are
- we don't have to keep n cursors in memory for ever.
- from the client POV, it respects the PagedSeach contract
- it's easier to implement as we have less information to keep in the session, and to restore back

The cons are :
- it's time consuming, as if we have N entry to return, with a P page size, we will construct N/P cursors.

Do you see a better way to implement this control, and if not, which one do you think is the best ?

Thanks !

--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to