Full_Name: Pantelis Petridis Version: 2.4.23 OS: RedHat Enterprise Linux 4 x86_64 URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (194.237.142.6)
I am using OpenLDAP 2.4.23 with the Oracle Berkeley DB backend. After a few hours the OpenLDAP stops answering an ldapsearch request. The OpenLDAP server is blocking when I execute a command like the following:
-> Monitor backend ldapsearch -H "ldap://127.0.0.1:/1390/" -D cn=monitoring,cn=Monitor -W -b "cn=Current,cn=Connections,cn=Monitor" -x -s sub '*' '+'
or -> BDB backend ldapsearch -H "ldap://127.0.0.1:/1390/" -D cn=Resources -W -b "cn=Resources" -x -s sub
I can see with top -Hp <pid of slapd> that one thread is working 100%.
With kill -11 I created a corefile and I found out that the thread is in the cache.c file in line 1367. That is the while loop in back-bdb\cache.c
while ( busy ) { ldap_pvt_thread_yield(); busy = 0; bdb_cache_entryinfo_lock( ei ); if (( ei->bei_state & ( CACHE_ENTRY_NOT_LINKED | CACHE_ENTRY_LOADING | CACHE_ENTRY_ONELEVEL )) || ei->bei_finders > 0 ) busy = 1; bdb_cache_entryinfo_unlock( ei ); }
It seems that the entry ei can not be deleted from the cache.
I tried also to kill the slapd with executing the following command (many times) kill <pid of slapd> but it did not work. Only kill -9 <pid of slapd> killed the slapd process.
Do you have some information about what happened? Is there any explanation why the LDAP Server does not answer an LDAP request? Is there a workaround?
BR Pantelis