From 61f87870e2de6a3b84b1eabfe0c2ce5d1439dac5 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] OPENDJ-3133 ensure dsreplication status queries first the replica with the provided host/port

---
 opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 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 eac2329..307413e 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
@@ -24,6 +24,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -188,7 +189,7 @@
   private void readReplicationMonitoring()
   {
     Set<ReplicaDescriptor> replicasToUpdate = getReplicasToUpdate();
-    for (ServerDescriptor server : getServers())
+    for (ServerDescriptor server : putQueriedReplicaFirst(this.servers))
     {
       if (server.isReplicationServer())
       {
@@ -219,6 +220,23 @@
     }
   }
 
+  /** Put first in the list the replica which host/port was provided on the command line. */
+  private List<ServerDescriptor> putQueriedReplicaFirst(Set<ServerDescriptor> servers)
+  {
+    List<ServerDescriptor> results = new ArrayList<>(servers);
+    for (Iterator<ServerDescriptor> it = results.iterator(); it.hasNext();)
+    {
+      ServerDescriptor server = it.next();
+      if (adsContext.getHostPort().equals(server.getHostPort(true)))
+      {
+        it.remove();
+        results.add(0, server);
+        break; // avoids any ConcurrentModificationException
+      }
+    }
+    return results;
+  }
+
   private Set<ReplicaDescriptor> getReplicasToUpdate()
   {
     Set<ReplicaDescriptor> replicasToUpdate = new HashSet<>();

--
Gitblit v1.10.0