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/backends/MonitorBackend.java | 39 ++++++++++++++++++++++++---------------
1 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
index 630215b..a9358e6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
@@ -26,6 +26,7 @@
*/
package org.opends.server.backends;
+import static org.forgerock.util.Reject.*;
import static org.opends.messages.BackendMessages.*;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.config.ConfigConstants.*;
@@ -456,31 +457,39 @@
/** {@inheritDoc} */
@Override
- public long numSubordinates(final DN entryDN, final boolean subtree)
- throws DirectoryException
+ public long getNumberOfEntriesInBaseDN(final DN baseDN) throws DirectoryException {
+ checkNotNull(baseDN, "baseDN must not be null");
+ return getNumberOfSubordinates(baseDN, true) + 1;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public long getNumberOfChildren(final DN parentDN) throws DirectoryException {
+ checkNotNull(parentDN, "parentDN must not be null");
+ return getNumberOfSubordinates(parentDN, false);
+ }
+
+ private long getNumberOfSubordinates(final DN entryDN, final boolean includeSubtree) throws DirectoryException
{
final NavigableMap<DN, MonitorProvider<?>> dit = getDIT();
if (!dit.containsKey(entryDN))
{
return -1L;
}
- else
+ long count = 0;
+ final int childDNSize = entryDN.size() + 1;
+ for (final DN dn : dit.tailMap(entryDN, false).navigableKeySet())
{
- long count = 0;
- final int childDNSize = entryDN.size() + 1;
- for (final DN dn : dit.tailMap(entryDN, false).navigableKeySet())
+ if (!dn.isDescendantOf(entryDN))
{
- if (!dn.isDescendantOf(entryDN))
- {
- break;
- }
- else if (subtree || dn.size() == childDNSize)
- {
- count++;
- }
+ break;
}
- return count;
+ else if (includeSubtree || dn.size() == childDNSize)
+ {
+ count++;
+ }
}
+ return count;
}
/** {@inheritDoc} */
--
Gitblit v1.10.0