From 8e41745b17b37a2a508ba6a016eddf9c6f219125 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Tue, 13 Nov 2007 15:45:42 +0000
Subject: [PATCH] Fix 2588 - ReplicationBackend.getEntryCount() very inefficient

---
 opends/src/server/org/opends/server/replication/server/ReplicationBackend.java |   25 ++++++++-----------------
 1 files changed, 8 insertions(+), 17 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
index 80e3822..6033b78 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
@@ -331,23 +331,14 @@
     //This method only returns the number of actual change entries, the
     //domain and any baseDN entries are not counted.
     long retNum=0;
-    try {
-        InternalClientConnection conn =
-                    InternalClientConnection.getRootConnection();
-        SearchFilter filter=
-                       SearchFilter.createFilterFromString("(changetype=*)");
-        InternalSearchOperation searchOperation =
-                new InternalSearchOperation(conn,
-                        InternalClientConnection.nextOperationID(),
-                        InternalClientConnection.nextMessageID(), null,
-                        baseDNs[0],
-                        SearchScope.WHOLE_SUBTREE,
-                        DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                        filter, null, null);
-      search(searchOperation);
-      retNum=searchOperation.getSearchEntries().size();
-    } catch (DirectoryException ex) {
-      retNum=0;
+    Iterator<ReplicationCache> rcachei = server.getCacheIterator();
+    if (rcachei != null)
+    {
+      while (rcachei.hasNext())
+      {
+        ReplicationCache rc = rcachei.next();
+        retNum += rc.getChangesCount();
+      }
     }
     return retNum;
 

--
Gitblit v1.10.0