]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/dds.c
Merge remote-tracking branch 'origin/mdb.RE/0.9'
[openldap] / servers / slapd / overlays / dds.c
index 900c6fd3e356a3dd633af0057995774544403350..b5971cbc7f079fc1e804ae125ecf691bc897a76b 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2005-2013 The OpenLDAP Foundation.
+ * Copyright 2005-2015 The OpenLDAP Foundation.
  * Portions Copyright 2005-2006 SysNet s.n.c.
  * All rights reserved.
  *
@@ -1733,22 +1733,11 @@ dds_db_open(
        di->di_suffix = be->be_suffix;
        di->di_nsuffix = be->be_nsuffix;
 
-       /* ... so that count, if required, is accurate */
-       if ( di->di_max_dynamicObjects > 0 ) {
-               /* force deletion of expired entries... */
-               be->bd_info = (BackendInfo *)on->on_info;
-               rc = dds_expire( thrctx, di );
-               be->bd_info = (BackendInfo *)on;
-               if ( rc != LDAP_SUCCESS ) {
-                       rc = 1;
-                       goto done;
-               }
-
-               rc = dds_count( thrctx, be );
-               if ( rc != LDAP_SUCCESS ) {
-                       rc = 1;
-                       goto done;
-               }
+       /* count the dynamic objects first */
+       rc = dds_count( thrctx, be );
+       if ( rc != LDAP_SUCCESS ) {
+               rc = 1;
+               goto done;
        }
 
        /* start expire task */
@@ -1783,6 +1772,7 @@ dds_db_close(
                }
                ldap_pvt_runqueue_remove( &slapd_rq, di->di_expire_task );
                ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
+               di->di_expire_task = NULL;
        }
 
        (void)entry_info_unregister( dds_entry_info, (void *)di );