From 710ec51ca06f9ba8190b3d48ab869811adbf6604 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 03 Aug 2016 10:11:49 +0000
Subject: [PATCH] TopologyCache.updateReplicas() simplified code by optimizing the search filter

---
 opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
index 307413e..c69aecf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
@@ -36,7 +36,6 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.EntryNotFoundException;
-import org.forgerock.opendj.ldap.requests.Requests;
 import org.forgerock.opendj.ldap.requests.SearchRequest;
 import org.forgerock.opendj.ldap.responses.SearchResultEntry;
 import org.forgerock.opendj.ldif.ConnectionEntryReader;
@@ -51,8 +50,10 @@
 import static com.forgerock.opendj.cli.Utils.*;
 
 import static org.forgerock.opendj.ldap.SearchScope.*;
+import static org.forgerock.opendj.ldap.requests.Requests.*;
 import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.messages.QuickSetupMessages.*;
+
 /**
  * This class allows to read the configuration of the different servers that are
  * registered in a given ADS server. It provides a read only view of the
@@ -459,7 +460,8 @@
       throws NamingException, IOException
   {
     ServerLoader loader = getServerLoader(replicationServer.getAdsProperties());
-    SearchRequest request = Requests.newSearchRequest("cn=monitor", WHOLE_SUBTREE, "(missing-changes=*)",
+    // only replicas have "server-id", but not replication servers
+    SearchRequest request = newSearchRequest("cn=monitor", WHOLE_SUBTREE, "(&(missing-changes=*)(server-id=*))",
         "domain-name",
         "server-id",
         "missing-changes",
@@ -475,13 +477,7 @@
         int replicaId = -1;
         try
         {
-          Integer sid = asInteger(sr, "server-id");
-          if (sid == null)
-          {
-            // This is not a replica, but a replication server. Skip it
-            continue;
-          }
-          replicaId = Integer.valueOf(sid);
+          replicaId = sr.getAttribute("server-id").parse().asInteger();
         }
         catch (Throwable t)
         {
@@ -490,14 +486,15 @@
 
         for (ReplicaDescriptor replica : candidateReplicas)
         {
-          if (dn.equals(replica.getSuffix().getDN())
-              && replica.isReplicated()
+          if (replica.isReplicated()
+              && dn.equals(replica.getSuffix().getDN())
               && replica.getReplicationId() == replicaId)
           {
             // This statistic is optional.
             setAgeOfOldestMissingChange(replica, sr);
             setMissingChanges(replica, sr);
             updatedReplicas.add(replica);
+            break;
           }
         }
       }

--
Gitblit v1.10.0