Howard Chu wrote:
Chris Card wrote:
Howard Chu wrote:
Subject: Re: MDB_BAD_VALSIZE error
Chris Card wrote:
Hi All,
I'm running openldap 2.4.36 on centos 6.3, 64 bit.
I'm finally trying out MDB as a replacement for BDB in our openldap setup, and I've noticed that I'm getting MDB_BAD_VALSIZE errors when adding some DNs, which could be added without error when using BDB as the backend:
52e9170b <= mdb_dn2id_add 0x5da55e: -30781 52e9170b mdb_add: dn2id_add failed: MDB_BAD_VALSIZE: Too big key/data, key is empty, or wrong DUPFIXED size (-30781)
Looking at the code, it seems that this error happens when MDB_MAXKEYSIZE is exceeded and MDB_MAXKEYSIZE is set to 511 as far as I can see.
The DNs which are giving this error are between 232 and 255 characters long.
Does the MDB backend have an implicit limit on the length of valid DNs?
slapd has a limit of 8192 bytes on DNs. RDNs in back-mdb are limited by MDB_MAXKEYSIZE.
Can this be increased (by changing MDB_MAXKEYSIZE) and if so, what is the longest DN which can be supported by the MDB backend?
The longest DN supported is 8192 bytes. The longest RDN would be something close to one half of MDB_MAXKEYSIZE.
Thanks, I understand now. The longest RDN appears to be 245 characters on my system. Can MDB_MAXKEYSIZE be increased? If so, what is the maximum safe value?
Read the comments in lmdb.h and/or mdb.c. The limits are documented there.
In 2.4.36 the comment is: * We require that keys all fit onto a regular page. This limit * could be raised a bit further if needed; to something just * under #MDB_PAGESIZE / #MDB_MINKEYS.
In 2.4.38 the comment is: * We require that keys all fit onto a regular page. This limit * could be raised a bit further if needed; to something just * under (page size / #MDB_MINKEYS / 3).
Is the comment for 2.4.38 the correct one? And should I read that as (page size) / (#MDB_MINKEYS * 3) ?
Chris