[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: sssvlv

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/