Full_Name: Sean Burford Version: 2.3.32 OS: Linux URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (65.57.245.11)
Searches that span periods of BDB lock exhaustion may return truncated results with a success error code. It should return an err=80 failure.
This was with a BDB 4.4.20 backend.
In the log below you can see: a search starts at 11:00:01 the search returns success:240 entries at 11:00:03 a search starts at 11:15:01 bdb runs out of locks at 11:15:02, informs the mod operation that it failed the search returns success:128 entries at 11:15:02
Both searches were identical.
Nov 9 11:00:01 conn=71131 op=2 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(objectClass=exampleClass)" Nov 9 11:00:01 conn=71131 op=2 SRCH attr=* + Nov 9 11:00:03 conn=71131 op=2 SEARCH RESULT tag=101 err=0 nentries=240 text= ... Nov 9 11:15:01 conn=72711 op=2 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(objectClass=exampleClass)" Nov 9 11:15:01 conn=72711 op=2 SRCH attr=* + ... Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks Nov 9 11:15:02 => bdb_idl_delete_key: c_get id failed: Cannot allocate memory (12) Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks ... Nov 9 11:15:02 Attribute index delete failure Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks Nov 9 11:15:02 bdb(dc=example,dc=com): Lock table is out of available locks Nov 9 11:15:02 conn=72642 op=10 RESULT tag=103 err=80 text= Nov 9 11:15:02 conn=72131 op=144 RESULT tag=103 err=80 text=internal error ... Nov 9 11:15:02 conn=72711 op=2 SEARCH RESULT tag=101 err=0 nentries=128 text= Nov 9 11:15:05 conn=72711 op=3 UNBIND Nov 9 11:15:05 conn=72711 fd=57 closed ()
The database definition is: database bdb suffix "dc=example,dc=com" directory /var/lib/ldap overlay auditlog auditlog /var/lib/ldap/ldif/auditlog/audit.com.ldif overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 1000 overlay accesslog logdb cn=accesslog logops writes logsuccess TRUE logpurge 02+23:46 01+23:46 # This limits section applies to the user this bug is about... limits dn.exact="uid=user1,ou=people,dc=example,dc=com" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited cachesize 100000 idlcachesize 10000 sizelimit 200000 checkpoint 512 1 lastmod on idletimeout 300 threads 64