]> git.sur5r.net Git - openldap/commitdiff
ITS#5086 fix Adds in IDL cache
authorHoward Chu <hyc@openldap.org>
Fri, 28 Dec 2007 07:40:18 +0000 (07:40 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 28 Dec 2007 07:40:18 +0000 (07:40 +0000)
servers/slapd/back-bdb/idl.c

index dad12bf56186af7dcb28f0460e38648fdbe6d3bb..44ccbbb0477e1725b1d45dd9d47a33b658207c2f 100644 (file)
@@ -715,10 +715,6 @@ bdb_idl_insert_key(
 
        assert( id != NOID );
 
-       if ( bdb->bi_idl_cache_size ) {
-               bdb_idl_cache_del( bdb, db, key );
-       }
-
        DBTzero( &data );
        data.size = sizeof( ID );
        data.ulen = data.size;
@@ -891,6 +887,12 @@ fail:
                cursor->c_close( cursor );
                return rc;
        }
+       /* If key was added (didn't already exist) and using IDL cache,
+        * update key in IDL cache.
+        */
+       if ( !rc && bdb->bi_idl_cache_max_size ) {
+               bdb_idl_cache_add_id( bdb, db, key, id );
+       }
        rc = cursor->c_close( cursor );
        if( rc != 0 ) {
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
@@ -923,7 +925,7 @@ bdb_idl_delete_key(
        }
        assert( id != NOID );
 
-       if ( bdb->bi_idl_cache_max_size ) {
+       if ( bdb->bi_idl_cache_size ) {
                bdb_idl_cache_del( bdb, db, key );
        }