]> git.sur5r.net Git - openldap/commitdiff
ITS#6176
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 19 Jun 2009 23:53:41 +0000 (23:53 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 19 Jun 2009 23:53:41 +0000 (23:53 +0000)
CHANGES
doc/man/man5/slapd-bdb.5
servers/slapd/back-bdb/init.c

diff --git a/CHANGES b/CHANGES
index f624771a9c136f1c5e7cac56dd8b3f732a2dee41..52b1fffef58859fe367709e6d3fff1aa5f236634 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -28,6 +28,7 @@ OpenLDAP 2.4.17 Engineering
        Fixed slapd sockets usage on windows (ITS#6039)
        Fixed slapd some abandon and cancel race conditions (ITS#6104)
        Fixed slapd tls context after changes (ITS#6135)
+       Fixed slapd-bdb/hdb adjust dncachesize if too low (ITS#6176)
        Fixed slapd-hdb freeing of already freed entries (ITS#6074)
        Fixed slapd-hdb entryinfo cleanup (ITS#6088)
        Fixed slapd-hdb dncache lockups (ITS#6095)
index ec3210e0ae6d5b7890d3a6e1a1bd0f4a9e973632..f0a6d4cf920543dc8cd1f34a0fdcaa8351dc0069 100644 (file)
@@ -147,7 +147,10 @@ will return a different result.
 .BI dncachesize \ <integer>
 Specify the maximum number of DNs in the in-memory DN cache. The
 default is twice the \fBcachesize\fP. Ideally this cache should be
-large enough to contain the DNs of every entry in the database.
+large enough to contain the DNs of every entry in the database. If
+set to a smaller value than the \fBcachesize\fP it will be silently
+increased to equal the \fBcachesize\fP.
+
 It should be noted that the \fBDN cache\fP is allowed to temporarily
 grow beyond the configured size. It does this if many entries are 
 locked when it tries to do a purge, because that means they're
index 653d0e9e782e5b2c6fb90f9b24a3ba028ed56dc1..fe480e59a931f4822ec7e11346d2651dd49382e4 100644 (file)
@@ -374,6 +374,11 @@ shm_retry:
                bdb->bi_cache.c_eimax = bdb->bi_cache.c_maxsize * 2;
        }
 
+       /* dncache must be >= entrycache */
+       if ( bdb->bi_cache.c_eimax < bdb->bi_cache.c_maxsize ) {
+               bdb->bi_cache.c_eimax = bdb->bi_cache.c_maxsize;
+       }
+
        if ( bdb->bi_idl_cache_max_size ) {
                bdb->bi_idl_tree = NULL;
                bdb->bi_idl_cache_size = 0;