mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noël Rouvignac
02.08.2016 61f87870e2de6a3b84b1eabfe0c2ce5d1439dac5
OPENDJ-3133 ensure dsreplication status queries first the replica with the provided host/port
1 files modified
20 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java 20 ●●●●● patch | view | raw | blame | history
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<>();