Chris Card wrote:
>>>> When using the sssvlv overlay how does the client tell the server that
the
>>> sort request can be thrown away, so that sort requests don't hang around
until
>>> sssvlv-max or sssvlv-maxpercon are exceeded?
>>>
>>> There is no official mechanism for this. This is a flaw in the Sorting/VLV
>>> specification. For Paged Results you simply send a followup request with
>>> pagesize set to zero, but that doesn't apply for VLV.
>>>
>>> I believe in our current implementation, if you send a new Paged Results
>>> request on a connection that has VLVs outstanding, one of the VLVs will be
>>> aborted. Unfortunately, if you have multiple VLVs outstanding, there's no
way
>>> to determine which one gets aborted. (Apparently this was overlooked when
>>> patching the overlay to allow multiple VLVs on a connection...)
>>
>> Thanks for the info.
>> Is it the case that sort requests are associated with a particular connection?
>
> What does RFC2891 say?
>
As far as I can see it doesn't mention connections.
Then probably the answer is no.
However, looking at the code in sssvlv.c, it appears that a sort
operation is associated with a session, and a session
is associated with a connection, e.g. on line 900 of sssvlv.c in sssvlv_op_search():
sort_conns[op->o_conn->c_conn_idx][sess_id] = so;
That's actually limiting VLV requests. You didn't ask about VLV requests, you
asked about sort requests. Ask the wrong question, get a useless answer. So
now, what does draft-ietf-ldapv3-vlv say?
>>> From my testing it seems that a sort request will remain
active in the server evenif the client disconnects, which doesn't seem right.
>
> How are you determining that this is the case?
I'm using ldapsearch to test requests with sss and vlv controls. After running
several such ldapsearch commands I get an
error from the server :
# search result
search: 2
result: 51 Server is busy
text: Other sort requests already in progress
I am assuming that the connection to the server is dropped when the ldapsearch command
terminates; that
must certainly be the case at the client end since the process no longer exists.
I see no such error here. I can run ldapsearch and send VLV requests ad
nauseam. Most likely you have misconfigured something again.
--
-- Howard Chu
CTO, Symas Corp.
http://www.symas.com
Director, Highland Sun
http://highlandsun.com/hyc/
Chief Architect, OpenLDAP
http://www.openldap.org/project/