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

(ITS#6973) Problem with sssvlv overlay and ldapsearch



Full_Name: Chris Card
Version: 2.4.23
OS: Centos 5.4
URL: 
Submission from: (NULL) (91.194.158.133)


I am running slapd with a bdb back end, and using ldapsearch to query it.

My ldapsearch command looks like this:

    ldapsearch -h localhost -x -b "..........." -D ".........." -w ....  -E
\!sss=mail:caseIgnoreIA5Match -E \!vlv=0/10/0/10

which returns the first 11 records and then prompts:

    # search result
    search: 2
    result: 0 Success
    control: 1.2.840.113556.1.4.474 false MAMKAQA=
    sortResult: (0) Success
    control: 2.16.840.1.113730.3.4.10 false MA8CAQACATkCAQAEBOhhowg=
    vlvResult: pos=0 count=57 context=6GGjCA== (0) Success

    # numResponses: 12
    # numEntries: 11
    Press [before/after(/offset/count|:value)] Enter for the next window.

Then, when I press Enter ldapsearch outputs the following and exits:

    # extended LDIF
    #
    # LDAPv3
    # base <......> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    # with server side sorting critical control
    # with virtual list view critical control: 0/10/10/57
    #

    # search result
    search: 3
    result: 4 Size limit exceeded

    # numResponses: 1

If I then try the search again ldapsearch outputs:

    # extended LDIF
    #
    # LDAPv3
    # base <......> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    # with server side sorting critical control
    # with virtual list view critical control: 0/10/0/10
    #

    # search result
    search: 2
    result: 51 Server is busy
    text: Other sort requests already in progress

    # numResponses: 1

The "Size limit exceeded" error appears to come from slap_send_search_entry() in
result.c:

    if ( op->ors_slimit >= 0 && rs->sr_nentries >= op->ors_slimit ) {
        return LDAP_SIZELIMIT_EXCEEDED;
    }

because op->ors_slimit is 0 instead of SLAP_NO_LIMIT (-1).

If I do the ldapsearch with an explicit size limit, using the -z flag, e.g. 

    ldapsearch -h localhost -x -b "..........." -D ".........." -w ....  -E
\!sss=mail:caseIgnoreIA5Match -E \!vlv=0/10/0/10 -z 20

then I don't get the "Size limit exceeded" error, and all the records are output
by ldapsearch with a prompt after each set of 11 records, but after all the
records have been output there is a different error before ldapsearch exits:

    # extended LDIF
    #
    # LDAPv3
    # base <dc=blackspider,dc=com> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    # with server side sorting critical control
    # with virtual list view critical control: 0/10/60/57
    #

    # search result
    search: 8
    result: 76 Virtual List View error
    control: 2.16.840.1.113730.3.4.10 false MA8CATICATkCAU0EBHBFIQo=
    vlvResult: pos=50 count=57 context=cEUhCg== (77) Unknown error

    # numResponses: 1

and again a subsequent ldapsearch request gets the "Server is busy" error.