Class Topology


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

    A server may be a DS, a 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 a RS may listen to several interfaces, it provides one to many endpoints to contact for each RS.

    • Constructor Detail

      • 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 Detail

      • 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
      • 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 topoMsg,
                                         Dn baseDn,
                                         ReplicationServerId senderId)
        Updates the topology with the provided topology message.
        Parameters:
        topoMsg - 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.