X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Fconfig.c;h=08ac6468a66c834990d172de1cef5a37f005b1b0;hb=3bf9998d7885ef6bbc4690d4229e5cb5068a35de;hp=8a762aee14955be4a4dd574aafa125e2884851c7;hpb=d4124e0e031f5b76a80f9c25a04146d334bcf898;p=openldap diff --git a/servers/slapd/back-bdb/config.c b/servers/slapd/back-bdb/config.c index 8a762aee14..08ac6468a6 100644 --- a/servers/slapd/back-bdb/config.c +++ b/servers/slapd/back-bdb/config.c @@ -337,9 +337,9 @@ bdb_cf_cleanup( ConfigArgs *c ) if ( bdb->bi_flags & BDB_RE_OPEN ) { bdb->bi_flags ^= BDB_RE_OPEN; - rc = c->be->bd_info->bi_db_close( c->be, NULL ); + rc = c->be->bd_info->bi_db_close( c->be, &c->reply ); if ( rc == 0 ) - rc = c->be->bd_info->bi_db_open( c->be, NULL ); + rc = c->be->bd_info->bi_db_open( c->be, &c->reply ); /* If this fails, we need to restart */ if ( rc ) { slapd_shutdown = 2; @@ -483,9 +483,11 @@ bdb_cf_gen( ConfigArgs *c ) if ( bdb->bi_txn_cp_task ) { struct re_s *re = bdb->bi_txn_cp_task; bdb->bi_txn_cp_task = NULL; + ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); if ( ldap_pvt_runqueue_isrunning( &slapd_rq, re ) ) ldap_pvt_runqueue_stoptask( &slapd_rq, re ); ldap_pvt_runqueue_remove( &slapd_rq, re ); + ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); } bdb->bi_txn_cp = 0; break; @@ -620,9 +622,11 @@ bdb_cf_gen( ConfigArgs *c ) c->log ); return 1; } + ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); bdb->bi_txn_cp_task = ldap_pvt_runqueue_insert( &slapd_rq, bdb->bi_txn_cp_min * 60, bdb_checkpoint, bdb, LDAP_XSTRING(bdb_checkpoint), c->be->be_suffix[0].bv_val ); + ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); } } } break; @@ -747,9 +751,11 @@ bdb_cf_gen( ConfigArgs *c ) c->log ); return 1; } + ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); bdb->bi_index_task = ldap_pvt_runqueue_insert( &slapd_rq, 36000, bdb_online_index, c->be, LDAP_XSTRING(bdb_online_index), c->be->be_suffix[0].bv_val ); + ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); } break;