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

JLDAP: No results on multiple synchronous searches



I've got something of an odd problem here.  If I run the following Java:

#---------------------------------------------------------------------------

import com.novell.ldap.*;

public class TestLDAP {
    public TestLDAP () {
    }

    public static void main (String args[]) {
        LDAPConnection  ldap    = null;
        try {
            ldap    = new LDAPConnection ();
            ldap.connect ("ldap-test", 389);
            ldap.bind (LDAPConnection.LDAP_V3, "uid=user,o=basedn", (new String ("password")).getBytes());

            LDAPSearchResults   r   = ldap.search ("o=basedn",
                                                   LDAPConnection.SCOPE_BASE, "(objectclass=*)", null, false);
            System.err.println ("First search: " + r.getCount () + " results found.");

            LDAPSearchResults   r2   = ldap.search ("o=basedn",
                                                   LDAPConnection.SCOPE_BASE, "(objectclass=*)", null, false);
            System.err.println ("Second search: " + r2.getCount () + " results found.");
        } catch (LDAPException e){ 
            System.err.println (e);
        }

        System.err.println ("Done.");
    }
}

#---------------------------------------------------------------------------

I get the following:

First search: 1 results found.
Second search: 0 results found.
Done.

... which is not what I expect.  However, if I insert something as simple
as a Thread.sleep (100) before the println, I get the expected '1'.

However again, if I throw in a System.err.println (r.next ()); after each
search, the first will print out the entry, and the second will error with:

LDAPException: LDAPSearchResults.next(): No entry found & request is not complete (82) Local Error

... regardless of the delay.  To make matters even more confusing, if I
take the same code and run it on another machine (FreeBSD as opposed to
Linux), then BOTH searches will produce no results.

What am I doing wrong?  I can't produce this behaviour with the equivalent
code in Perl with Net::LDAP.  I'm running against OpenLDAP 2.2.23, which I
realize is old but can't be upgraded right now.  I'm using JLDAP built
from source from CVS as of 2006/06/29 11:00 ADT.

The fact that the two queries are the same doesn't appear to matter.  I
just use the same queries to show that one succeeds while the other does
not.