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