https://bugs.openldap.org/show_bug.cgi?id=10283
Issue ID: 10283 Summary: Search result internal error: mdb_opinfo_get: thread_pool_setkey failed err Product: OpenLDAP Version: 2.5.13 Hardware: All OS: All Status: UNCONFIRMED Keywords: needs_review Severity: normal Priority: --- Component: slapd Assignee: bugs@openldap.org Reporter: asilva@wirelessmundi.com Target Milestone: ---
Hi,
From time to time i got errors when perform searches and i need to restart the server to establish the service.
This is the event log when it happens:
Nov 08 10:07:39 main slapd[3946463]: conn=1780 fd=182 ACCEPT from IP=113.53.215.185:41404 (IP=0.0.0.0:389) Nov 08 10:07:39 main slapd[3946463]: conn=1780 op=0 BIND dn="cn=admin,ou=users,o=cptrabajosocial.local.com" method=128 Nov 08 10:07:39 main slapd[3946463]: mdb_opinfo_get: thread_pool_setkey failed err (12) Nov 08 10:07:39 main slapd[3946463]: conn=1780 op=0 RESULT tag=97 err=12 qtime=0.000027 etime=0.000159 text=internal error Nov 08 10:07:39 main slapd[3946463]: conn=1780 op=1 UNBIND Nov 08 10:07:39 main slapd[3946463]: conn=1780 fd=182 closed
In the code i found: if ( ( rc = ldap_pvt_thread_pool_setkey( ctx, mdb->mi_dbenv, data, mdb_reader_free, NULL, NULL ) ) ) { mdb_txn_abort( moi->moi_txn ); moi->moi_txn = NULL; Debug( LDAP_DEBUG_ANY, "mdb_opinfo_get: thread_pool_setkey failed err (%d)\n", rc ); return rc; }
and libraries/libldap/tpool.c i see that the error 12 (ENOMEM) is returned when MAXKEYS is reached:
if ( data || kfree ) { if ( i>=MAXKEYS ) return ENOMEM; ctx->ltu_key[i].ltk_key = key; ctx->ltu_key[i].ltk_data = data; ctx->ltu_key[i].ltk_free = kfree; } else if ( found ) { clear_key_idx( ctx, i ); }
Found an old mail about this issue: https://openldap-technical.openldap.narkive.com/Th0WLQYh/max-numbers-of-subo...
In my setup I've configured 47 MBs databases, for contacts only, one for each company in the server, so they cannot see each others data. I can't understand how it happens and how to prevent it, is there any configuration i can set to avoid reach the MAXKEYS?
Thanks,