From 9f0904fda87bfcf921deeccdbaeafe834fbad696 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Fri, 24 Apr 2015 14:30:47 +0000
Subject: [PATCH] OPENDJ-1725: Persistit: very long recovery and many discarded txns after addrate test

---
 opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java |   33 ++++++++++++++++++---------------
 1 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java
index 6ce62a5..3d8bf6d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/ConfigFileHandler.java
@@ -26,6 +26,7 @@
  */
 package org.opends.server.extensions;
 
+import static org.forgerock.util.Reject.*;
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.extensions.ExtensionsConstants.*;
@@ -846,29 +847,31 @@
 
   /** {@inheritDoc} */
   @Override
-  public long numSubordinates(DN entryDN, boolean subtree)
-      throws DirectoryException
+  public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException
   {
-    ConfigEntry baseEntry = configEntries.get(entryDN);
+    checkNotNull(baseDN, "baseDN must not be null");
+    final ConfigEntry baseEntry = configEntries.get(baseDN);
     if (baseEntry == null)
     {
       return -1;
     }
 
-    if(!subtree)
+    long count = 1;
+    for (ConfigEntry child : baseEntry.getChildren().values())
     {
-      return baseEntry.getChildren().size();
+      count += getNumberOfEntriesInBaseDN(child.getDN());
+      count++;
     }
-    else
-    {
-      long count = 0;
-      for(ConfigEntry child : baseEntry.getChildren().values())
-      {
-        count += numSubordinates(child.getDN(), true);
-        count ++;
-      }
-      return count;
-    }
+    return count;
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public long getNumberOfChildren(DN parentDN) throws DirectoryException
+  {
+    checkNotNull(parentDN, "parentDN must not be null");
+    final ConfigEntry baseEntry = configEntries.get(parentDN);
+    return baseEntry != null ? baseEntry.getChildren().size() : -1;
   }
 
   /** {@inheritDoc} */

--
Gitblit v1.10.0