]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/config.c
ITS#7402 add txnID to debug output to aid tracing
[openldap] / servers / slapd / back-bdb / config.c
index 74331beb9ed6ee6a0357128835848fb32f892284..d12e5d8091d438640b29faac565e63a24b7ad888 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2000-2008 The OpenLDAP Foundation.
+ * Copyright 2000-2012 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -61,12 +61,12 @@ static ConfigTable bdbcfg[] = {
                        "DESC 'Directory for database content' "
                        "EQUALITY caseIgnoreMatch "
                        "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
-       { "cachefree", "size", 2, 2, 0, ARG_UINT|ARG_OFFSET,
+       { "cachefree", "size", 2, 2, 0, ARG_ULONG|ARG_OFFSET,
                (void *)offsetof(struct bdb_info, bi_cache.c_minfree),
                "( OLcfgDbAt:1.11 NAME 'olcDbCacheFree' "
                        "DESC 'Number of extra entries to free when max is reached' "
                        "SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
-       { "cachesize", "size", 2, 2, 0, ARG_UINT|ARG_OFFSET,
+       { "cachesize", "size", 2, 2, 0, ARG_ULONG|ARG_OFFSET,
                (void *)offsetof(struct bdb_info, bi_cache.c_maxsize),
                "( OLcfgDbAt:1.1 NAME 'olcDbCacheSize' "
                        "DESC 'Entry cache size in entries' "
@@ -109,12 +109,12 @@ static ConfigTable bdbcfg[] = {
                "( OLcfgDbAt:1.5 NAME 'olcDbDirtyRead' "
                "DESC 'Allow reads of uncommitted data' "
                "SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
-       { "dncachesize", "size", 2, 2, 0, ARG_UINT|ARG_OFFSET,
+       { "dncachesize", "size", 2, 2, 0, ARG_ULONG|ARG_OFFSET,
                (void *)offsetof(struct bdb_info, bi_cache.c_eimax),
                "( OLcfgDbAt:1.12 NAME 'olcDbDNcacheSize' "
                        "DESC 'DN cache size' "
                        "SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL },
-       { "idlcachesize", "size", 2, 2, 0, ARG_UINT|ARG_OFFSET,
+       { "idlcachesize", "size", 2, 2, 0, ARG_ULONG|ARG_OFFSET,
                (void *)offsetof(struct bdb_info, bi_idl_cache_max_size),
                "( OLcfgDbAt:1.6 NAME 'olcDbIDLcacheSize' "
                "DESC 'IDL cache size in IDLs' "
@@ -241,6 +241,8 @@ bdb_online_index( void *ctx, void *arg )
                rc = TXN_BEGIN( bdb->bi_dbenv, NULL, &txn, bdb->bi_db_opflags );
                if ( rc ) 
                        break;
+               Debug( LDAP_DEBUG_TRACE, LDAP_XSTRING(bdb_online_index) ": txn id: %u\n",
+                       txn->id(txn), 0, 0 );
                if ( getnext ) {
                        getnext = 0;
                        BDB_ID2DISK( id, &nid );
@@ -324,31 +326,31 @@ bdb_cf_cleanup( ConfigArgs *c )
        struct bdb_info *bdb = c->be->be_private;
        int rc = 0;
 
-       if ( bdb->bi_flags & BDB_UPD_CONFIG ) {
-               if ( bdb->bi_db_config ) {
-                       int i;
-                       FILE *f = fopen( bdb->bi_db_config_path, "w" );
-                       if ( f ) {
-                               for (i=0; bdb->bi_db_config[i].bv_val; i++)
-                                       fprintf( f, "%s\n", bdb->bi_db_config[i].bv_val );
-                               fclose( f );
-                       }
-               } else {
-                       unlink( bdb->bi_db_config_path );
-               }
-               bdb->bi_flags ^= BDB_UPD_CONFIG;
-       }
-
        if ( bdb->bi_flags & BDB_DEL_INDEX ) {
                bdb_attr_flush( bdb );
                bdb->bi_flags ^= BDB_DEL_INDEX;
        }
-       
+
        if ( bdb->bi_flags & BDB_RE_OPEN ) {
                bdb->bi_flags ^= BDB_RE_OPEN;
                rc = c->be->bd_info->bi_db_close( c->be, &c->reply );
-               if ( rc == 0 )
+               if ( rc == 0 ) {
+                       if ( bdb->bi_flags & BDB_UPD_CONFIG ) {
+                               if ( bdb->bi_db_config ) {
+                                       int i;
+                                       FILE *f = fopen( bdb->bi_db_config_path, "w" );
+                                       if ( f ) {
+                                               for (i=0; bdb->bi_db_config[i].bv_val; i++)
+                                                       fprintf( f, "%s\n", bdb->bi_db_config[i].bv_val );
+                                               fclose( f );
+                                       }
+                               } else {
+                                       unlink( bdb->bi_db_config_path );
+                               }
+                               bdb->bi_flags ^= BDB_UPD_CONFIG;
+                       }
                        rc = c->be->bd_info->bi_db_open( c->be, &c->reply );
+               }
                /* If this fails, we need to restart */
                if ( rc ) {
                        slapd_shutdown = 2;
@@ -387,8 +389,8 @@ bdb_cf_gen( ConfigArgs *c )
                        if ( bdb->bi_txn_cp ) {
                                char buf[64];
                                struct berval bv;
-                               bv.bv_len = snprintf( buf, sizeof(buf), "%d %d", bdb->bi_txn_cp_kbyte,
-                                       bdb->bi_txn_cp_min );
+                               bv.bv_len = snprintf( buf, sizeof(buf), "%ld %ld",
+                                       (long) bdb->bi_txn_cp_kbyte, (long) bdb->bi_txn_cp_min );
                                if ( bv.bv_len > 0 && bv.bv_len < sizeof(buf) ) {
                                        bv.bv_val = buf;
                                        value_add_one( &c->rvalue_vals, &bv );
@@ -487,7 +489,7 @@ bdb_cf_gen( ConfigArgs *c )
                        if ( bdb->bi_lock_detect != DB_LOCK_DEFAULT ) {
                                int i;
                                for (i=0; !BER_BVISNULL(&bdb_lockd[i].word); i++) {
-                                       if ( bdb->bi_lock_detect == bdb_lockd[i].mask ) {
+                                       if ( bdb->bi_lock_detect == (u_int32_t)bdb_lockd[i].mask ) {
                                                value_add_one( &c->rvalue_vals, &bdb_lockd[i].word );
                                                rc = 0;
                                                break;
@@ -556,7 +558,7 @@ bdb_cf_gen( ConfigArgs *c )
                                for (; bdb->bi_db_config[i].bv_val; i++)
                                        bdb->bi_db_config[i] = bdb->bi_db_config[i+1];
                        }
-                       bdb->bi_flags |= BDB_UPD_CONFIG;
+                       bdb->bi_flags |= BDB_UPD_CONFIG|BDB_RE_OPEN;
                        c->cleanup = bdb_cf_cleanup;
                        break;
                /* Doesn't really make sense to change these on the fly;
@@ -758,7 +760,7 @@ bdb_cf_gen( ConfigArgs *c )
                }
 
                if ( bdb->bi_flags & BDB_IS_OPEN ) {
-                       bdb->bi_flags |= BDB_UPD_CONFIG;
+                       bdb->bi_flags |= BDB_UPD_CONFIG|BDB_RE_OPEN;
                        c->cleanup = bdb_cf_cleanup;
                } else {
                /* If we're just starting up...
@@ -890,7 +892,7 @@ bdb_cf_gen( ConfigArgs *c )
                                c->log, c->argv[1] );
                        return 1;
                }
-               bdb->bi_lock_detect = rc;
+               bdb->bi_lock_detect = (u_int32_t)rc;
                break;
 
        case BDB_SSTACK: