Class MultimasterReplication

    • Constructor Detail

      • MultimasterReplication

        public MultimasterReplication()
    • Method Detail

      • findDomain

        public static LDAPReplicationDomain findDomain​(DN dn,
                                                       PluginOperation pluginOp)
        Finds the domain for a given DN.
        Parameters:
        dn - The DN for which the domain must be returned.
        pluginOp - An optional operation for which the check is done. Can be null is the request has no associated operation.
        Returns:
        The domain for this DN.
      • createNewDomain

        public static LDAPReplicationDomain createNewDomain​(ReplicationDomainCfg configuration)
                                                     throws ConfigException
        Creates a new domain from its configEntry, do the necessary initialization and starts it so that it is fully operational when this method returns.
        Parameters:
        configuration - The entry with the configuration of this domain.
        Returns:
        The domain created.
        Throws:
        ConfigException - When the configuration is not valid.
      • deleteDomain

        public static void deleteDomain​(DN dn)
        Deletes a domain.
        Parameters:
        dn - : the base DN of the domain to delete.
      • isConfigurationAddAcceptable

        public boolean isConfigurationAddAcceptable​(ReplicationDomainCfg configuration,
                                                    List<org.forgerock.i18n.LocalizableMessage> unacceptableReasons)
        Description copied from interface: ConfigurationAddListener
        Indicates whether the proposed addition of a new configuration is acceptable to this add listener.
        Specified by:
        isConfigurationAddAcceptable in interface ConfigurationAddListener<ReplicationDomainCfg>
        Parameters:
        configuration - The configuration that will be added.
        unacceptableReasons - A list that can be used to hold messages about why the provided configuration is not acceptable.
        Returns:
        Returns true if the proposed addition is acceptable, or false if it is not.
      • handleConflictResolution

        public SynchronizationProviderResult handleConflictResolution​(PreOperationModifyOperation modifyOperation)
        Description copied from class: SynchronizationProvider
        Performs any necessary synchronization processing for the operation that may be needed early on to deal with any potential conflict resolution or updates to historical data. This method will be invoked immediately after a lock is acquired on the target entry.
        Overrides:
        handleConflictResolution in class SynchronizationProvider<ReplicationSynchronizationProviderCfg>
        Parameters:
        modifyOperation - The modify operation to be processed.
        Returns:
        Information about the result of the synchronization provider processing. Note that if the provider indicates that processing should end for the operation, it must set the result code for the operation and should also set the response message.
      • handleConflictResolution

        public SynchronizationProviderResult handleConflictResolution​(PreOperationAddOperation addOperation)
                                                               throws DirectoryException
        Description copied from class: SynchronizationProvider
        Performs any necessary synchronization processing for the operation that may be needed early on to deal with any potential conflict resolution or updates to historical data. This method will be invoked immediately after a lock is acquired on the target entry.
        Overrides:
        handleConflictResolution in class SynchronizationProvider<ReplicationSynchronizationProviderCfg>
        Parameters:
        addOperation - The add operation to be processed.
        Returns:
        Information about the result of the synchronization provider processing. Note that if the provider indicates that processing should end for the operation, it must set the result code for the operation and should also set the response message.
        Throws:
        DirectoryException - If a problem occurs during synchronization processing.
      • handleConflictResolution

        public SynchronizationProviderResult handleConflictResolution​(PreOperationDeleteOperation deleteOperation)
                                                               throws DirectoryException
        Description copied from class: SynchronizationProvider
        Performs any necessary synchronization processing for the operation that may be needed early on to deal with any potential conflict resolution or updates to historical data. This method will be invoked immediately after a lock is acquired on the target entry.
        Overrides:
        handleConflictResolution in class SynchronizationProvider<ReplicationSynchronizationProviderCfg>
        Parameters:
        deleteOperation - The delete operation to be processed.
        Returns:
        Information about the result of the synchronization provider processing. Note that if the provider indicates that processing should end for the operation, it must set the result code for the operation and should also set the response message.
        Throws:
        DirectoryException - If a problem occurs during synchronization processing.
      • doPreOperation

        public SynchronizationProviderResult doPreOperation​(PreOperationModifyOperation modifyOperation)
        Description copied from class: SynchronizationProvider
        Performs any necessary synchronization processing that may be needed before the provided modify operation is performed. This method will be invoked immediately before processing the modify operation in the backend.
        Specified by:
        doPreOperation in class SynchronizationProvider<ReplicationSynchronizationProviderCfg>
        Parameters:
        modifyOperation - The modify operation to be processed.
        Returns:
        Information about the result of the synchronization provider processing. Note that if the provider indicates that processing should end for the operation, it must set the result code for the operation and should also set the response message.
      • doPreOperation

        public SynchronizationProviderResult doPreOperation​(PreOperationAddOperation addOperation)
        Description copied from class: SynchronizationProvider
        Performs any necessary synchronization processing that may be needed before the provided add operation is performed. This method will be invoked immediately before processing the add operation in the backend.
        Specified by:
        doPreOperation in class SynchronizationProvider<ReplicationSynchronizationProviderCfg>
        Parameters:
        addOperation - The add operation to be processed.
        Returns:
        Information about the result of the synchronization provider processing. Note that if the provider indicates that processing should end for the operation, it must set the result code for the operation and should also set the response message.
      • processBackupBegin

        public void processBackupBegin​(LocalBackend<?> backend,
                                       BackupConfig config)
        Description copied from interface: BackupTaskListener
        Performs any processing that might be necessary just before the server begins processing on a backup task. This may include flushing any outstanding writes to disk so they are included in the backup and/or pausing interaction with the provided backend while the backup is in progress.
        Specified by:
        processBackupBegin in interface BackupTaskListener
        Parameters:
        backend - The backend to be archived.
        config - Configuration information about the backup to be performed.
      • processBackupEnd

        public void processBackupEnd​(LocalBackend<?> backend,
                                     BackupConfig config,
                                     boolean successful)
        Description copied from interface: BackupTaskListener
        Performs any processing that might be necessary after the server has completed processing on a backup task. Note that this will always be called when backup processing completes, regardless of whether it was successful.
        Specified by:
        processBackupEnd in interface BackupTaskListener
        Parameters:
        backend - The backend that was archived.
        config - Configuration information about the backup that was performed.
        successful - Indicates whether the backup operation completed successfully.
      • processRestoreBegin

        public void processRestoreBegin​(LocalBackend<?> backend,
                                        RestoreConfig config)
        Description copied from interface: RestoreTaskListener
        Performs any processing that might be necessary just before the server begins processing on a restore task. This should include pausing interaction with the provided backend while the restore is in progress.
        Specified by:
        processRestoreBegin in interface RestoreTaskListener
        Parameters:
        backend - The backend to be restored.
        config - Configuration information about the restore to be performed.
      • processRestoreEnd

        public void processRestoreEnd​(LocalBackend<?> backend,
                                      RestoreConfig config,
                                      boolean successful)
        Description copied from interface: RestoreTaskListener
        Performs any processing that might be necessary after the server has completed processing on a restore task. Note that this will always be called when restore processing completes, regardless of whether it was successful.
        Specified by:
        processRestoreEnd in interface RestoreTaskListener
        Parameters:
        backend - The backend that was restored.
        config - Configuration information about the restore that was performed.
        successful - Indicates whether the restore operation completed successfully.
      • processImportBegin

        public void processImportBegin​(LocalBackend<?> backend,
                                       LDIFImportConfig config)
        Description copied from interface: ImportTaskListener
        Performs any processing that might be necessary just before the server begins processing on an LDIF import task. This should include pausing interaction with the provided backend while the import is in progress.
        Specified by:
        processImportBegin in interface ImportTaskListener
        Parameters:
        backend - The backend to be imported.
        config - Configuration information about the LDIF import to be performed.
      • processImportEnd

        public void processImportEnd​(LocalBackend<?> backend,
                                     LDIFImportConfig config,
                                     boolean successful)
        Description copied from interface: ImportTaskListener
        Performs any processing that might be necessary after the server has completed processing on an LDIF import task. Note that this will always be called when import processing completes, regardless of whether it was successful.
        Specified by:
        processImportEnd in interface ImportTaskListener
        Parameters:
        backend - The backend that was imported.
        config - Configuration information about the LDIF import that was performed.
        successful - Indicates whether the import operation completed successfully.
      • processExportBegin

        public void processExportBegin​(LocalBackend<?> backend,
                                       LDIFExportConfig config)
        Description copied from interface: ExportTaskListener
        Performs any processing that might be necessary just before the server begins processing on an LDIF export task. This may include flushing any outstanding writes to disk so they are included in the export and/or pausing interaction with the provided backend while the export is in progress.
        Specified by:
        processExportBegin in interface ExportTaskListener
        Parameters:
        backend - The backend to be exported.
        config - Configuration information about the LDIF export to be performed.
      • processExportEnd

        public void processExportEnd​(LocalBackend<?> backend,
                                     LDIFExportConfig config,
                                     boolean successful)
        Description copied from interface: ExportTaskListener
        Performs any processing that might be necessary after the server has completed processing on an LDIF export task. Note that this will always be called when export processing completes, regardless of whether it was successful.
        Specified by:
        processExportEnd in interface ExportTaskListener
        Parameters:
        backend - The backend that was exported.
        config - Configuration information about the LDIF export that was performed.
        successful - Indicates whether the export operation completed successfully.
      • isConfigurationDeleteAcceptable

        public boolean isConfigurationDeleteAcceptable​(ReplicationDomainCfg configuration,
                                                       List<org.forgerock.i18n.LocalizableMessage> unacceptableReasons)
        Description copied from interface: ConfigurationDeleteListener
        Indicates whether the proposed deletion of an existing configuration is acceptable to this delete listener.
        Specified by:
        isConfigurationDeleteAcceptable in interface ConfigurationDeleteListener<ReplicationDomainCfg>
        Parameters:
        configuration - The configuration that will be deleted.
        unacceptableReasons - A list that can be used to hold messages about why the provided configuration is not acceptable.
        Returns:
        Returns true if the proposed deletion is acceptable, or false if it is not.
      • getReplicationServerListener

        public ReplicationServerListener getReplicationServerListener()
        Returns the replication server listener associated to that Multimaster Replication.
        Returns:
        the listener.
      • getNumberOfDomains

        public static int getNumberOfDomains()
        Gets the number of handled domain objects.
        Returns:
        The number of handled domain objects
      • getExcludedChangelogDomains

        public static Set<DN> getExcludedChangelogDomains()
                                                   throws DirectoryException
        Gets the Set of domain baseDN which are disabled for the external changelog.
        Returns:
        The Set of domain baseDNs which are disabled for the external changelog.
        Throws:
        DirectoryException - if a problem occurs
      • isECLEnabledDomain

        public static boolean isECLEnabledDomain​(DN baseDN)
        Returns whether the provided baseDN represents a replication domain enabled for the external changelog.
        Parameters:
        baseDN - the replication domain to check
        Returns:
        true if the provided baseDN is enabled for the external changelog, false if the provided baseDN is disabled for the external changelog or unknown to multimaster replication.
      • isECLEnabled

        public static boolean isECLEnabled()
        Returns whether the external change-log contains data from at least a domain.
        Returns:
        whether the external change-log contains data from at least a domain
      • getConnectionTimeoutMS

        public static int getConnectionTimeoutMS()
        Returns the connection timeout in milli-seconds.
        Returns:
        The connection timeout in milli-seconds.