summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ldap/servers/slapd/back-ldbm/dblayer.c2
-rw-r--r--ldap/servers/slapd/back-ldbm/perfctrs.c15
-rw-r--r--ldap/servers/slapd/back-ldbm/proto-back-ldbm.h2
3 files changed, 16 insertions, 3 deletions
diff --git a/ldap/servers/slapd/back-ldbm/dblayer.c b/ldap/servers/slapd/back-ldbm/dblayer.c
index 287b64c2..efc9c420 100644
--- a/ldap/servers/slapd/back-ldbm/dblayer.c
+++ b/ldap/servers/slapd/back-ldbm/dblayer.c
@@ -2481,7 +2481,7 @@ int dblayer_post_close(struct ldbminfo *li, int dbmode)
/* Shutdown the performance counter stuff */
if (DBLAYER_NORMAL_MODE & dbmode) {
if (priv->perf_private) {
- perfctrs_terminate(&priv->perf_private);
+ perfctrs_terminate(&priv->perf_private, priv->dblayer_env->dblayer_DB_ENV);
}
}
diff --git a/ldap/servers/slapd/back-ldbm/perfctrs.c b/ldap/servers/slapd/back-ldbm/perfctrs.c
index 13fda0db..b3307ffe 100644
--- a/ldap/servers/slapd/back-ldbm/perfctrs.c
+++ b/ldap/servers/slapd/back-ldbm/perfctrs.c
@@ -219,8 +219,21 @@ void perfctrs_init(struct ldbminfo *li, perfctrs_private **ret_priv)
}
/* Terminate perf ctrs */
-void perfctrs_terminate(perfctrs_private **priv)
+void perfctrs_terminate(perfctrs_private **priv, DB_ENV *db_env)
{
+ DB_MPOOL_STAT *mpstat = NULL;
+ DB_TXN_STAT *txnstat = NULL;
+ DB_LOG_STAT *logstat = NULL;
+ DB_LOCK_STATi *lockstat = NULL;
+
+ MEMP_STAT(db_env, &mpstat, NULL, DB_STAT_CLEAR, malloc);
+ slapi_ch_free((void**)&mpstat);
+ TXN_STAT(db_env, &txnstat, DB_STAT_CLEAR, malloc);
+ slapi_ch_free((void**)&txnstat);
+ LOG_STAT(db_env, &logstat, DB_STAT_CLEAR, malloc);
+ slapi_ch_free((void**)&logstat);
+ LOCK_STAT(db_env, &lockstat, DB_STAT_CLEAR, malloc);
+ slapi_ch_free((void**)&lockstat);
#if defined(_WIN32)
if (NULL != (*priv)->memory) {
UnmapViewOfFile((*priv)->memory);
diff --git a/ldap/servers/slapd/back-ldbm/proto-back-ldbm.h b/ldap/servers/slapd/back-ldbm/proto-back-ldbm.h
index 29bcb094..c3ef2ff0 100644
--- a/ldap/servers/slapd/back-ldbm/proto-back-ldbm.h
+++ b/ldap/servers/slapd/back-ldbm/proto-back-ldbm.h
@@ -382,7 +382,7 @@ int parent_update_on_childchange(modify_context *mc,int op, size_t *numofchildre
*/
void perfctrs_wait(size_t milliseconds,perfctrs_private *priv,DB_ENV *db_env);
void perfctrs_init(struct ldbminfo *li,perfctrs_private **priv);
-void perfctrs_terminate(perfctrs_private **priv);
+void perfctrs_terminate(perfctrs_private **priv, DB_ENV *db_env);
void perfctrs_as_entry( Slapi_Entry *e, perfctrs_private *priv, DB_ENV *db_env );
/*