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

ldapsearch hangs with proxyCache



OpenLDAP 2.3.19 + syncprov.c from HEAD, BDB db42-4.2.52_3, FreeBSD 4.10.

LDAPSEARCH returns a result then hangs.

slapd.conf:

#
# This constructs a view of *all* directories.
# 
database        meta
access  to * by * read
suffix  "dc=AdminView"
rootdn  "dc=AdminView"
lastmod off

overlay pcache
proxycache      bdb 1000 1 100 60
#proxyattrset   0 ciapp cihost cistatus ciportnum
#proxyattrset   0 *
proxyattrset    0 ciApp ciAppType ciHost ciStatus ciPortNum ciDBPath description ciAppVar ciDomainMember
proxytemplate   (&(objectClass=)(ciApp=)) 0 3600
directory       /var/tmp/AdminViewCache
cachesize       1000
index           objectClass eq
index           ciApp,ciAppType,ciHost,ciStatus,ciPortNum,ciDBPath,description,c iAppVar,ciDomainMember pres,eq,sub

uri     "ldapi://%2fvar%2frun%2fopenldap%2fldapi/dc=AdminView"
rewriteEngine   on
rewriteContext  default
rewriteRule     "(.*)dc=AdminView$" "%1dc=au,dc=cordoors,dc=dev" ":"
rebind-as-user  true
acl-authcDN     "cn=Manager,dc=au,dc=cordoors,dc=dev"
acl-passwd      "XXX"

etc...

Query:

ldapsearch -h localhost -b dc=AdminView "(&(objectclass=ciapplication)(ciapp=orck))" ciAppType

Output:

# extended LDIF
#
# LDAPv3
# base <dc=AdminView> with scope subtree
# filter: (&(objectclass=ciapplication)(ciapp=orck))
# requesting: ciAppType 
#

# orck, au.cordoors.dev
dn: ciApp=orck,dc=au,dc=cordoors,dc=dev
ciAppType: MER

(Force a core-dump; log merely shows all meta-dbs being searched)

GDB of LDAPSEARCH:

(gdb) bt
#0  0x2821a4c4 in poll () from /usr/lib/libc.so.4
#1  0x805e580 in ldap_int_select (ld=0x807e000, timeout=0x0) at os-ip.c:922
#2  0x805206f in wait4msg (ld=0x807e000, msgid=-1, all=0, timeout=0x0, 
    result=0xbfbff188) at result.c:301
#3  0x8051cbb in ldap_result (ld=0x807e000, msgid=-1, all=0, timeout=0x0, 
    result=0xbfbff188) at result.c:124
#4  0x804cbbd in dosearch (ld=0x807e000, base=0x807c040 "dc=AdminView", 
    scope=2, filtpatt=0x0, 
    value=0xbfbff844 "(&(objectclass=ciapplication)(ciapp=orck))", 
    attrs=0xbfbff72c, attrsonly=0, sctrls=0x0, cctrls=0x0, timeout=0x0, 
    sizelimit=-1) at ldapsearch.c:1006
#5  0x804c3de in main (argc=7, argv=0xbfbff714) at ldapsearch.c:868

Edit out proxycache, and find I can't stop SLAPD.  Enable set-uid cores,
and do it in.

GDB (of SLAPD):

(gdb) bt
#0  0x813d1d0 in __db_tas_mutex_lock_4002 ()
#1  0x81253b5 in __lock_get_4002 ()
#2  0x817805c in __db_lget_4002 ()
#3  0x8140b3d in __bam_search_4002 ()
#4  0x8186abf in __bam_c_search ()
#5  0x818562d in __bam_c_put ()
#6  0x8170042 in __db_c_put_4002 ()
#7  0x81766b7 in __db_c_put_pp_4002 ()
#8  0x80c85c0 in bdb_idl_insert_key (be=0x82b0800, db=0x8341c00, 
    tid=0xb8a7080, key=0xb46d024, id=2) at idl.c:862
#9  0x80c3e72 in bdb_dn2id_add (op=0xb46d474, txn=0xb8a7080, eip=0x82b1f38, 
    e=0xb798c80) at dn2id.c:114
#10 0x80be83c in bdb_add (op=0xb46d474, rs=0xb46d250) at add.c:287
#11 0x809d928 in syncrepl_add_glue (op=0xb46d474, e=0xc000380)
    at syncrepl.c:2231
#12 0x80db41b in merge_entry (op=0xb46d474, e=0xc000380, query_uuid=0xb46d5a4)
    at pcache.c:194
#13 0x80dcc11 in cache_entries (op=0x8350a00, rs=0xb46ddb0, 
    query_uuid=0xb46d5a4) at pcache.c:1011
#14 0x80dce4a in pcache_response (op=0x8350a00, rs=0xb46ddb0) at pcache.c:1072
#15 0x80681be in send_ldap_response (op=0x8350a00, rs=0xb46ddb0)
    at result.c:312
#16 0x8068ac7 in slap_send_ldap_result (op=0x8350a00, rs=0xb46ddb0)
    at result.c:583
#17 0x80b5d3a in meta_back_search (op=0x8350a00, rs=0xb46ddb0) at search.c:866
#18 0x80a1e9a in overlay_op_walk (op=0x8350a00, rs=0xb46ddb0, which=op_search, 
    oi=0x82b1d00, on=0x82b1e00) at backover.c:499
#19 0x80a1fd6 in over_op_func (op=0x8350a00, rs=0xb46ddb0, which=op_search)
    at backover.c:551
#20 0x80a2042 in over_op_search (op=0x8350a00, rs=0xb46ddb0) at backover.c:573
#21 0x805ea73 in fe_op_search (op=0x8350a00, rs=0xb46ddb0) at search.c:355
#22 0x805e731 in do_search (op=0x8350a00, rs=0xb46ddb0) at search.c:217
#23 0x805c910 in connection_operation (ctx=0xb46de3c, arg_v=0x8350a00)
    at connection.c:1307
#24 0x80f77cd in ldap_int_thread_pool_wrapper (xpool=0x825f240) at tpool.c:480
#25 0x28391240 in _thread_start () from /usr/lib/libc_r.so.4
#26 0x0 in ?? ()

Result of search with proxycache commented out:

# extended LDIF
#
# LDAPv3
# base <dc=AdminView> with scope subtree
# filter: (&(objectclass=ciapplication)(ciapp=orck))
# requesting: ciAppType 
#

# orck, au.cordoors.dev
dn: ciApp=orck,dc=au,dc=cordoors,dc=dev
ciAppType: MER

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

I'm willing to accept that I'm a total idiot, and that the proxycache is
woefully misconfigured...

-- 
Dave Horsfall  DTM  VK2KFU  daveh@ci.com.au  Ph: +61 2 9552-5509 (d) -5500 (sw)
Corinthian Engrng P/L, Ste 54 Jones Bay Whf, 26-32 Pirrama Rd, Pyrmont 2009, AU