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

Re: Index for objectclass does not work...



Steeg Carson wrote:
Hello Howard,


By default an index slot can only maintain 65535 records before it overflows
and loses precision. Once it loses precision, you tend to get results like
this. If you need to accomodate larger indices you can tweak a constant in
back-bdb/back-bdb.h and recompile. You'll probably also need to increase
LDAP_PVT_THREAD_STACK_SIZE.

can you please guide to do this? Which constant must be changed, which
values are
suitable for this constant and for LDAP_PVT_THREAD_STACK_SIZE?

If I change this values, which other impact does it have of used
memory and the slapd?

The constant is BDB_IDL_LOGN in back-bdb/idl.h. Incrementing it by 1 will double the range of an index slot before it loses precision. It will also double the amount of memory used by all of the indexing functions. I think you can safely double the current value without overrunning the default thread stack size. But if you go even higher you'll probably need to increase it.

The current value for LDAP_PVT_THREAD_STACK_SIZE is (1 * 1024 * 1024 * sizeof(void *))

(4MB on a 32 bit machine, 8MB on 64 bit machine).

If you need to raise it I would suggest adding e.g.
  XDEF=-DLDAP_PVT_THREAD_STACK_SIZE=16777216
to your make invocation and recompiling libldap_r with this new value.

--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/