]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/init.c
return structuralObjectClass errors
[openldap] / servers / slapd / back-bdb / init.c
index 635281b79a933b578734977d36e8491176e103fd..313430d3a55d29a178ac3f60830c8504d4732e10 100644 (file)
@@ -45,6 +45,7 @@ static int
 bdb_db_init( BackendDB *be )
 {
        struct bdb_info *bdb;
+       int rc;
 
        Debug( LDAP_DEBUG_TRACE,
                LDAP_XSTRING(bdb_db_init) ": Initializing " BDB_UCTYPE " database\n",
@@ -80,7 +81,9 @@ bdb_db_init( BackendDB *be )
        be->be_private = bdb;
        be->be_cf_ocs = be->bd_info->bi_cf_ocs;
 
-       return 0;
+       rc = bdb_monitor_db_init( be );
+
+       return rc;
 }
 
 static int
@@ -422,8 +425,16 @@ bdb_db_open( BackendDB *be )
                XLOCK_ID(bdb->bi_dbenv, &bdb->bi_cache.c_locker);
        }
 
+       /* monitor setup */
+       rc = bdb_monitor_db_open( be );
+       if ( rc != 0 ) {
+               goto fail;
+       }
+
        bdb->bi_flags |= BDB_IS_OPEN;
 
+       entry_prealloc( bdb->bi_cache.c_maxsize );
+       attr_prealloc( bdb->bi_cache.c_maxsize * 20 );
        return 0;
 
 fail:
@@ -439,6 +450,9 @@ bdb_db_close( BackendDB *be )
        struct bdb_db_info *db;
        bdb_idl_cache_entry_t *entry, *next_entry;
 
+       /* monitor handling */
+       (void)bdb_monitor_db_close( be );
+
        bdb->bi_flags &= ~BDB_IS_OPEN;
 
        ber_bvarray_free( bdb->bi_db_config );
@@ -517,6 +531,9 @@ bdb_db_destroy( BackendDB *be )
 {
        struct bdb_info *bdb = (struct bdb_info *) be->be_private;
 
+       /* monitor handling */
+       (void)bdb_monitor_db_close( be );
+
        if( bdb->bi_dbenv_home ) ch_free( bdb->bi_dbenv_home );
        if( bdb->bi_db_config_path ) ch_free( bdb->bi_db_config_path );
 
@@ -551,8 +568,8 @@ bdb_back_initialize(
                LDAP_CONTROL_MANAGEDSAIT,
                LDAP_CONTROL_NOOP,
                LDAP_CONTROL_PAGEDRESULTS,
-                LDAP_CONTROL_PRE_READ,
-                LDAP_CONTROL_POST_READ,
+               LDAP_CONTROL_PRE_READ,
+               LDAP_CONTROL_POST_READ,
                LDAP_CONTROL_SUBENTRIES,
                LDAP_CONTROL_X_PERMISSIVE_MODIFY,
 #ifdef LDAP_X_TXN