File slapd-bdb-stop-checkpoint.dif of Package evoldap2-client

Index: servers/slapd/back-bdb/init.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-bdb/init.c,v
retrieving revision 1.293
retrieving revision 1.294
diff -u -r1.293 -r1.294
--- servers/slapd/back-bdb/init.c	27 Aug 2008 20:28:16 -0000	1.293
+++ servers/slapd/back-bdb/init.c	12 Sep 2008 07:53:40 -0000	1.294
@@ -640,6 +640,17 @@
 {
 	struct bdb_info *bdb = (struct bdb_info *) be->be_private;
 
+	/* stop and remove checkpoint task */
+	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 );
+	}
+
 	/* monitor handling */
 	(void)bdb_monitor_db_destroy( be );