]> git.sur5r.net Git - openldap/commitdiff
Fix spurious lock messages from slapcat
authorHoward Chu <hyc@openldap.org>
Tue, 25 Nov 2003 10:31:10 +0000 (10:31 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 25 Nov 2003 10:31:10 +0000 (10:31 +0000)
servers/slapd/back-bdb/cache.c

index 234f2cf85dd31ff0f59c696a8be1292664741d16..4faa6655cd5f0687c687ccbf25ab19c7c98033eb 100644 (file)
@@ -140,6 +140,8 @@ bdb_cache_entry_db_unlock
 #else
        int rc;
 
+       if ( !lock ) return 0;
+
        rc = LOCK_PUT ( env, lock );
        return rc;
 #endif
@@ -489,7 +491,13 @@ bdb_cache_lru_add(
        EntryInfo *ei
 )
 {
-       DB_LOCK         lock;
+       DB_LOCK         lock, *lockp;
+
+       if ( locker ) {
+               lockp = &lock;
+       } else {
+               lockp = NULL;
+       }
 
        /* See if we're above the cache size limit */
        if ( bdb->bi_cache.c_cursize > bdb->bi_cache.c_maxsize ) {
@@ -507,20 +515,20 @@ bdb_cache_lru_add(
                         * the object is idle.
                         */
                        if ( bdb_cache_entry_db_lock( bdb->bi_dbenv, locker, elru, 1, 1,
-                               &lock ) == 0 ) {
+                               lockp ) == 0 ) {
                                /* If there's no entry, or this node is in
                                 * the process of linking into the cache,
                                 * skip it.
                                 */
                                if ( !elru->bei_e || (elru->bei_state & CACHE_ENTRY_NOT_LINKED) ) {
-                                       bdb_cache_entry_db_unlock( bdb->bi_dbenv, &lock );
+                                       bdb_cache_entry_db_unlock( bdb->bi_dbenv, lockp );
                                        continue;
                                }
                                LRU_DELETE( &bdb->bi_cache, elru );
                                elru->bei_e->e_private = NULL;
                                bdb_entry_return( elru->bei_e );
                                elru->bei_e = NULL;
-                               bdb_cache_entry_db_unlock( bdb->bi_dbenv, &lock );
+                               bdb_cache_entry_db_unlock( bdb->bi_dbenv, lockp );
                                --bdb->bi_cache.c_cursize;
                                if (bdb->bi_cache.c_cursize < bdb->bi_cache.c_maxsize)
                                        break;