Hi All,

 

We are searching with same filter but with two different search bases and we are seeing results to be different.

 

Case1: (working case)

Search filter: (cn=monitorsoapnode*)

Search base: o=itsmydomain.com

Search result:

cn=monitorsoapnode@np-m910-45-4,cn=soap nodes,o=system,cn=cordys,cn=ucloud,o=itsmydomain.com

cn=monitorsoapnode@ np-m910-87-8,cn=soap nodes,o=system,cn=cordys,cn=ucloud,o=itsmydomain.com

 

Case2: (not working case)

Search filter: (cn=monitorsoapnode*)

Search base: cn=ucloud,o=itsmydomain.com

Search result:

cn=monitorsoapnode@np-m910-45-4,cn=soap nodes,o=system,cn=cordys,cn=ucloud,o=itsmydomain.com

 

It is observed that with search base “o=system,cn=cordys,cn=ucloud,o=itsmydomain.com” we are getting the expected results.

We are seeing this behaviour with hdb database, but not with bdb. But we want to stick to hdb only.  Is there any workaround to fix the issue(something like changing the configuration settings)?

It is also observed that in both cases bdb_substring_candidates value is 2 but bdb_search_candidates  value is different.  I am not sure if this observation is relevant or not.

 

 

You can check the logs  for working and not working cases below. Please help.

 

########Not working case log ##################

<= send_search_entry: conn 1000 exit.

send_ldap_result: conn=1000 op=8 p=3

send_ldap_response: msgid=9 tag=101 err=0

ber_flush2: 14 bytes to sd 12

connection_get(12): got connid=1000

connection_read(12): checking for input on id=1000

ber_get_next

connection_get(12): got connid=1000

connection_read(12): checking for input on id=1000

ber_get_next

ber_get_next: tag 0x30 len 118 contents:

op tag 0x63, time 1409136356

ber_get_next

conn=1000 op=9 do_search

ber_scanf fmt ({miiiib) ber:

>>> dnPrettyNormal: <cn=ucloud,o=itsmydomain.com>

<<< dnPrettyNormal: <cn=ucloud,o=itsmydomain.com>, <cn=ucloud,o=itsmydomain.com>

ber_scanf fmt ({m) ber:

ber_scanf fmt (m) ber:

ber_scanf fmt ({M}}) ber:

=> get_ctrls

ber_scanf fmt ({m) ber:

=> get_ctrls: oid="2.16.840.1.113730.3.4.2" (noncritical)

<= get_ctrls: n=1 rc=0 err=""

=> hdb_search

bdb_dn2entry("cn=ucloud,o=itsmydomain.com")

search_candidates: base="cn=ucloud,o=itsmydomain.com" (0x00000002) scope=2

=> hdb_dn2idl("cn=ucloud,o=itsmydomain.com")

=> bdb_substring_candidates (cn)

=> key_read

<= bdb_index_read 6 candidates

=> key_read

<= bdb_index_read 33 candidates

=> key_read

<= bdb_index_read 3 candidates

=> key_read

<= bdb_index_read 17 candidates

=> key_read

<= bdb_index_read 6 candidates

=> key_read

<= bdb_index_read 18 candidates

<= bdb_substring_candidates: 2, first=267, last=198029

bdb_search_candidates: id=1 first=267 last=267

=> send_search_entry: conn 1000 dn="cn=monitorsoapnode@np-m910-45-4,cn=soap nodes,o=system,cn=cordys,cn=ucloud,o=itsmydomain.com"

ber_flush2: 140 bytes to sd 12

<= send_search_entry: conn 1000 exit.

send_ldap_result: conn=1000 op=9 p=3

send_ldap_response: msgid=10 tag=101 err=0

ber_flush2: 14 bytes to sd 12

 

########Working case log ##################

<= send_search_entry: conn 1000 exit.

send_ldap_result: conn=1000 op=9 p=3

send_ldap_response: msgid=10 tag=101 err=0

ber_flush2: 14 bytes to sd 12

connection_get(12): got connid=1000

connection_read(12): checking for input on id=1000

ber_get_next

connection_get(12): got connid=1000

connection_read(12): checking for input on id=1000

ber_get_next

ber_get_next: tag 0x30 len 108 contents:

op tag 0x63, time 1409136444

ber_get_next

conn=1000 op=10 do_search

ber_scanf fmt ({miiiib) ber:

>>> dnPrettyNormal: <o=itsmydomain.com>

<<< dnPrettyNormal: <o=itsmydomain.com>, <o=itsmydomain.com>

ber_scanf fmt ({m) ber:

ber_scanf fmt (m) ber:

ber_scanf fmt ({M}}) ber:

=> get_ctrls

ber_scanf fmt ({m) ber:

=> get_ctrls: oid="2.16.840.1.113730.3.4.2" (noncritical)

<= get_ctrls: n=1 rc=0 err=""

=> hdb_search

bdb_dn2entry("o=itsmydomain.com")

search_candidates: base="o=itsmydomain.com" (0x00000001) scope=2

=> hdb_dn2idl("o=itsmydomain.com")

=> bdb_substring_candidates (cn)

=> key_read

<= bdb_index_read 6 candidates

=> key_read

<= bdb_index_read 33 candidates

=> key_read

<= bdb_index_read 3 candidates

=> key_read

<= bdb_index_read 17 candidates

=> key_read

<= bdb_index_read 6 candidates

=> key_read

<= bdb_index_read 18 candidates

<= bdb_substring_candidates: 2, first=267, last=198029

bdb_search_candidates: id=2 first=267 last=198029

=> send_search_entry: conn 1000 dn="cn=monitorsoapnode@np-m910-45-4,cn=soap nodes,o=system,cn=cordys,cn=ucloud,o=itsmydomain.com"

ber_flush2: 140 bytes to sd 12

<= send_search_entry: conn 1000 exit.

=> send_search_entry: conn 1000 dn="cn=monitorsoapnode@np-m910-87-8,cn=soap nodes,o=system,cn=cordys,cn=ucloud,o=itsmydomain.com"

ber_flush2: 140 bytes to sd 12

<= send_search_entry: conn 1000 exit.

send_ldap_result: conn=1000 op=10 p=3

send_ldap_response: msgid=11 tag=101 err=0

ber_flush2: 14 bytes to sd 12

 

Slapd config details you may be interested in are as follows

 

####### Config details start ######

database      hdb

suffix "o= itsmydomain.com"

rootdn "cn=Directory Manager,o= itsmydomain.com"

rootpw {SSHA}4tqAhskuvQm3wFz9EI3lqLI8pRRs6IfI

 

sizelimit 2000

index default pres,eq

index cn pres,eq,sub

index objectClass eq

index entryCSN,entryUUID eq

index authenticationuser pres,eq,sub

index osidentity pres,eq,sub

cachesize 5000

checkpoint 1024 10

 

####### Config details end ######

 

 

Regards,

Jegan.