Class Topology

java.lang.Object
org.opends.server.replication.common.Topology

public final class Topology extends Object
Represents the topology of servers this local server is participating in.

A server may be a DS, an RS or a DS/RS.

If the topology contains servers with version 6.5 or lower, there can be multiple entries for the same server because there are multiple server ids per server.

The topology is updated with information from the local server and with information provided by the TopologyMsg received. A server is automatically removed from the topology if there is no update received from it during a given period of time.

The topology provides a way to know the list of all participating RSs through the getChangelogEndpoints() method. As an RS may listen to several interfaces, it provides one to many endpoints to contact for each RS.

  • Constructor Details

    • Topology

      public Topology(ServerContext serverContext, ServerId<?> localServerId) throws ConfigException
      Creates an empty topology.
      Parameters:
      serverContext - The server context.
      localServerId - The server id for the local server
      Throws:
      ConfigException - if the configuration cannot be read
  • Method Details

    • isLocalServerEndpoint

      public boolean isLocalServerEndpoint(com.forgerock.opendj.util.HostPort endpoint)
      Indicates whether the provided HostPort corresponds to this local server.
      Parameters:
      endpoint - the address to test.
      Returns:
      true if the provided HostPort corresponds to this local server.
    • isLocalServerHost

      public boolean isLocalServerHost(com.forgerock.opendj.util.Host host)
      Indicates whether the provided HostPort has the same Host as this local server.

      Note that the test is comparing hosts without DNS lookup, so it requires that the hosts are provided in the same form (i.e. with the same hostname or the same IP address).

      Parameters:
      host - the address to test.
      Returns:
      true if the provided HostPort has the same Host as this local server.
    • getChangelogEndpoints

      public Set<Set<com.forgerock.opendj.util.HostPort>> getChangelogEndpoints()
      Returns the set of replication endpoints for all the replication servers in the topology.

      A replication server can listen on several addresses, so there could be multiple endpoints for it.

      Returns:
      the set of replication endpoints for all servers in the topology.
    • setBootstrapServersForReplicationDomain

      public void setBootstrapServersForReplicationDomain(Set<com.forgerock.opendj.util.HostPort> bootstrapServers, Dn domainBaseDn)
      Sets the bootstrap servers - i.e. the servers known in the configuration - for a replication domain.
      Parameters:
      bootstrapServers - the set of host and port of the bootstrap servers.
      domainBaseDn - the base dn of the replication domain
    • setBootstrapServersForReplicationServer

      public void setBootstrapServersForReplicationServer(Set<com.forgerock.opendj.util.HostPort> bootstrapServers)
      Sets the bootstrap servers - i.e. the servers known in the configuration - for the replication server.
      Parameters:
      bootstrapServers - the set of host and port of the bootstrap servers.
    • removeBootstrapServersForReplicationDomain

      public void removeBootstrapServersForReplicationDomain(Dn domainBaseDn)
      Removes the bootstrap servers - i.e. the servers known in the configuration - for a replication domain.
      Parameters:
      domainBaseDn - the base dn of the replication domain
    • removeBootstrapServersForReplicationServer

      public void removeBootstrapServersForReplicationServer()
      Removes the bootstrap servers - i.e. the servers known in the configuration - for the replication server.
    • setLocalReplicationServer

      public void setLocalReplicationServer(ReplicationServerId rsId, com.forgerock.opendj.discovery.GroupId groupId, Duration changelogPurgeDelay, SortedSet<com.forgerock.opendj.util.Host> changelogEndpoints, int replicationPort)
      Sets the local replication server in the topology, merging it with any existing local replication domains.
      Parameters:
      rsId - the server ID of the local server.
      groupId - the group ID of the local server.
      changelogPurgeDelay - the purge delay for the changelog.
      changelogEndpoints - the addresses of the local replication server.
      replicationPort - the port of the local replication server.
    • addLocalReplicationDomain

      public void addLocalReplicationDomain(ReplicaId replicaId, Dn baseDn)
      Adds a replication domain to the local server in the topology.
      Parameters:
      replicaId - The replicaId of the local server.
      baseDn - The baseDn of the replication domain.
    • removeLocalReplicationDomain

      public void removeLocalReplicationDomain(ReplicaId replicaId, Dn baseDn)
      Removes a replication domain from the local server in the topology.
      Parameters:
      replicaId - The replicaId of the local server.
      baseDn - The baseDn of the replication domain.
    • addLocalAdminPorts

      public void addLocalAdminPorts(Collection<com.forgerock.opendj.util.HostPort> adminEndpoints)
      Adds administrative host ports to the local server.
      Parameters:
      adminEndpoints - the administrative host ports
    • addLocalLdapPorts

      public void addLocalLdapPorts(ConnectionSecurity connSecurity, Collection<com.forgerock.opendj.util.HostPort> ldapEndpoints)
      Adds LDAP (LDAPS / StartTLS) host ports to the local server.
      Parameters:
      connSecurity - connection security for the provided host ports
      ldapEndpoints - the ldap host ports
    • removeLocalAdminPorts

      public void removeLocalAdminPorts(Collection<com.forgerock.opendj.util.HostPort> adminEndpoints)
      Removes administrative host ports from the local server.
      Parameters:
      adminEndpoints - the administrative host ports
    • removeLocalLdapPorts

      public void removeLocalLdapPorts(ConnectionSecurity connSecurity, Collection<com.forgerock.opendj.util.HostPort> ldapEndpoints)
      Removes LDAP (LDAPS / StartTLS) host ports from the local server.
      Parameters:
      connSecurity - connection security for the provided host ports
      ldapEndpoints - the ldap host ports
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toDSInfoOrNull

      public DSInfo toDSInfoOrNull(ReplicaId replicaId)
      Returns the information available from the topology for this replica ID as a DSInfo object.
      Parameters:
      replicaId - the replica ID
      Returns:
      the available information as an DSInfo
    • toRSInfoOrNull

      public RSInfo toRSInfoOrNull(ReplicationServerId replicationServerId)
      Returns the information available from the topology for this replication server ID as a RSInfo object.
      Parameters:
      replicationServerId - the replication server ID
      Returns:
      the available information as an RSInfo
    • updateLocalGroupId

      public void updateLocalGroupId(String groupId)
      Updates the groupID for the local server.
      Parameters:
      groupId - the new groupID
    • applyTopologyMessage

      public void applyTopologyMessage(TopologyMsg topologyMsg, Dn baseDn, ReplicationServerId senderId)
      Updates the topology with the provided topology message.
      Parameters:
      topologyMsg - a topology message received from a remote RS.
      baseDn - the base Dn of the domain for which the topology message was received.
      senderId - the id of the RS that sent the topology message.