Class ReplicationServer

    • Constructor Detail

      • ReplicationServer

        public ReplicationServer​(ServerContext serverContext,
                                 ReplicationServerCfg cfg,
                                 ShutdownSynchronizer shutdownSync)
                          throws ConfigException
        Creates a new Replication server using the provided configuration entry and shutdown synchronization object.
        Parameters:
        serverContext - The directory server context
        cfg - The configuration of this replication server.
        shutdownSync - Synchronization object for shutdown of combined DS/RS instances.
        Throws:
        ConfigException - When Configuration is invalid.
    • Method Detail

      • getAllInstances

        public static List<ReplicationServer> getAllInstances()
        Get the list of every replication servers instantiated in the current VM.
        Returns:
        The list of every replication servers instantiated in the current VM.
      • initialize

        public void initialize()
                        throws ConfigException
        Initialization function for the replicationServer.
        Throws:
        ConfigException - if initialization fails
      • getListenersHealthStatus

        public HealthStatus getListenersHealthStatus()
        Returns the health status for the replication server listeners.
        Returns:
        the health status for the replication server listeners
      • isEclEnabledDomain

        public boolean isEclEnabledDomain​(Dn baseDn)
        Indicates whether the provided domain is enabled for the external changelog (ECL).
        Parameters:
        baseDn - the base DN of the domain.
        Returns:
        true if the provided domain is enabled for the External Changelog (ECL).
      • getExcludedChangelogDomains

        public Set<Dn> getExcludedChangelogDomains()
        Returns the domain base DNs which are disabled for the external changelog (ECL).
        Returns:
        the domain base DNs which are disabled for the external changelog (ECL)
      • getReplicationServerDomain

        public ReplicationServerDomain getReplicationServerDomain​(Dn baseDN)
        Get the ReplicationServerDomain associated to the base DN given in parameter.
        Parameters:
        baseDN - The base DN for which the ReplicationServerDomain must be returned
        Returns:
        The ReplicationServerDomain associated to the base DN given in parameter, or null if there is no ReplicationServerDomain associated to this baseDn
      • validateCookie

        public void validateCookie​(MultiDomainServerState cookie,
                                   Set<Dn> ignoredBaseDNs)
                            throws LdapException
        Validate that provided cookie is coherent with this replication server, when ignoring the provided set of DNs.

        The cookie is coherent if and only if it exactly has the set of DNs corresponding to the replication domains, and the states in the cookie are not older than oldest states in the server.

        Parameters:
        cookie - The multi domain state (cookie) to validate.
        ignoredBaseDNs - The set of DNs to ignore when validating
        Throws:
        LdapException - If the cookie is not valid
      • getOrCreateReplicationServerDomain

        public ReplicationServerDomain getOrCreateReplicationServerDomain​(Dn baseDN)
        Get the ReplicationServerDomain associated to the base DN given in parameter.
        Parameters:
        baseDN - The base DN for which the ReplicationServerDomain must be returned.
        Returns:
        The ReplicationServerDomain associated to the base DN given in parameter, or null if there is no ReplicationServerDomain associated to this baseDn and the create parameter was false.
      • shutdown

        public void shutdown()
        Shutdown the Replication Server service and all its connections.
      • getPurgeDelay

        public Duration getPurgeDelay()
        Retrieves the time interval after which changes must be deleted from the persistent storage.
        Returns:
        The time interval after which changes must be deleted from the persistent storage.
      • isConfigurationAcceptable

        public static boolean isConfigurationAcceptable​(ReplicationServerCfg configuration,
                                                        List<LocalizableMessage> unacceptableReasons)
        Check if the provided configuration is acceptable for add.
        Parameters:
        configuration - The configuration to check.
        unacceptableReasons - When the configuration is not acceptable, this table is use to return the reasons why this configuration is not acceptable.
        Returns:
        true if the configuration is acceptable, false other wise.
      • getServerId

        public ReplicationServerId getServerId()
        Get the replication server id.
        Returns:
        The replication server id
      • remove

        public void remove()
        Do what needed when the config object related to this replication server is deleted from the server configuration.
      • getGroupId

        public com.forgerock.opendj.discovery.GroupId getGroupId()
        Get The replication server group id. Can be default if not defined, but never null.
        Returns:
        The replication server group id.
      • getReplicationPort

        public int getReplicationPort()
        Retrieves the port used by this ReplicationServer.
        Returns:
        The port used by this ReplicationServer.
      • getChangelogEndpoint

        public com.forgerock.opendj.util.HostPort getChangelogEndpoint()
        Get the HostPort of the changelog endpoint.
        Returns:
        the server host port of the changelog endpoint.
      • getOldestChangeNumber

        public long getOldestChangeNumber()
        Returns the oldest change number in the change number index DB.
        Returns:
        the oldest change number in the change number index DB
      • getNewestChangeNumber

        public long getNewestChangeNumber()
        Returns the newest change number in the change number index DB.
        Returns:
        the newest change number in the change number index DB
      • getNewestECLCookie

        public MultiDomainServerState getNewestECLCookie()
        Returns the newest cookie value.
        Returns:
        the newest cookie value.
      • diskLowThresholdReached

        public void diskLowThresholdReached​(File directory,
                                            long thresholdInBytes)
        Description copied from interface: DiskSpaceMonitorHandler
        Notifies that the registered "low" threshold have been reached.
        Specified by:
        diskLowThresholdReached in interface DiskSpaceMonitorHandler
        Parameters:
        directory - the directory for which the threshold has been triggered
        thresholdInBytes - the threshold value in bytes
      • diskFullThresholdReached

        public void diskFullThresholdReached​(File directory,
                                             long thresholdInBytes)
        Description copied from interface: DiskSpaceMonitorHandler
        Notifies that the registered "full" threshold have been reached.
        Specified by:
        diskFullThresholdReached in interface DiskSpaceMonitorHandler
        Parameters:
        directory - the directory for which the threshold has been triggered
        thresholdInBytes - the threshold value in bytes
      • diskSpaceRestored

        public void diskSpaceRestored​(File directory,
                                      long lowThresholdInBytes,
                                      long fullThresholdInBytes)
        Description copied from interface: DiskSpaceMonitorHandler
        Notifies that the free disk space is now above both "low" and "full" thresholds.
        Specified by:
        diskSpaceRestored in interface DiskSpaceMonitorHandler
        Parameters:
        directory - the directory for which the threshold has been triggeredTODO
        lowThresholdInBytes - the low threshold value in bytes
        fullThresholdInBytes - the full threshold value in bytes
      • getWeight

        public int getWeight()
        Gets the weight affected to the replication server.

        Each replication server of the topology has a weight. When combined together, the weights of the replication servers of a same group can be translated to a percentage that determines the quantity of directory servers of the topology that should be connected to a replication server.

        For instance imagine a topology with 3 replication servers (with the same group id) with the following weights: RS1=1, RS2=1, RS3=2. This means that RS1 should have 25% of the directory servers connected in the topology, RS2 25%, and RS3 50%. This may be useful if the replication servers of the topology have a different power and one wants to spread the load between the replication servers according to their power.

        Returns:
        the weight
      • getReplicationServerDomains

        public Collection<ReplicationServerDomain> getReplicationServerDomains()
        Returns the replication server domains managed by this replication server.
        Returns:
        the replication server domains managed by this replication server
      • getChangelogDB

        public ChangelogDB getChangelogDB()
        Returns the changelogDB.
        Returns:
        the changelogDB.
      • isChangeNumberEnabled

        public boolean isChangeNumberEnabled()
        Returns whether change-log indexing is enabled for this RS.
        Returns:
        true if change-log indexing is enabled for this RS.
      • isEncrypted

        public boolean isEncrypted()
        Return whether change-log records should be encrypted.
        Returns:
        true if change-log records should be encrypted
      • getName

        public String getName()
        Returns a name that can be printed to logs for this Replication Server instance.
        Returns:
        a name that can be printed to logs for this Replication Server instance.
      • getServerContext

        public ServerContext getServerContext()
        Returns the server context.
        Returns:
        the server context