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