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

gbellato
15.55.2008 5c2f7331e6576e488cd2ef91b54e257e2b7e3778
Fix for issue 2805 : purge delay parameter not taken into account online.

When setting the Replication purge delay this was not propagated to the
DB handler and therefore not taken into account until after server restart.
3 files modified
38 ■■■■ changed files
opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java 2 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java 21 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java 15 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -340,6 +340,8 @@
      flush();
    db.shutdown();
    DirectoryServer.deregisterMonitorProvider(
        dbMonitor.getMonitorInstanceName());
  }
  /**
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -119,8 +119,11 @@
  private int rcvWindow;
  private int queueSize;
  private String dbDirname = null;
  private long trimAge; // the time (in sec) after which the  changes must
  // The delay (in sec) after which the  changes must
                        // be deleted from the persistent storage.
  private long purgeDelay;
  private int replicationPort;
  private boolean stopListen = false;
  private ReplSessionSecurity replSessionSecurity;
@@ -158,7 +161,7 @@
    if (replicationServers == null)
      replicationServers = new ArrayList<String>();
    queueSize = configuration.getQueueSize();
    trimAge = configuration.getReplicationPurgeDelay();
    purgeDelay = configuration.getReplicationPurgeDelay();
    dbDirname = configuration.getReplicationDBDirectory();
    rcvWindow = configuration.getWindowSize();
    if (dbDirname == null)
@@ -582,7 +585,7 @@
   */
  long getTrimage()
  {
    return trimAge * 1000;
    return purgeDelay * 1000;
  }
  /**
@@ -628,7 +631,17 @@
    if (replicationServers == null)
      replicationServers = new ArrayList<String>();
    queueSize = configuration.getQueueSize();
    trimAge = configuration.getReplicationPurgeDelay();
    long newPurgeDelay = configuration.getReplicationPurgeDelay();
    if (newPurgeDelay != purgeDelay)
    {
      purgeDelay = newPurgeDelay;
      // propagate
      for (ReplicationServerDomain domain : baseDNs.values())
      {
        domain.setPurgeDelay(purgeDelay);
      }
    }
    rcvWindow = configuration.getWindowSize();
    // changing the listen port requires to stop the listen thread
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -33,7 +33,6 @@
import org.opends.server.loggers.debug.DebugTracer;
import static org.opends.server.loggers.ErrorLogger.logError;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
import java.io.IOException;
@@ -1586,4 +1585,18 @@
      }
      return missingChanges;
    }
    /**
     * Set the purge delay on all the db Handlers for this Domain
     * of Replicaiton.
     *
     * @param delay The new purge delay to use.
     */
    void setPurgeDelay(long delay)
    {
      for (DbHandler handler : sourceDbHandlers.values())
      {
        handler.setPurgeDelay(delay);
      }
    }
}