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

gbellato
15.55.2008 b41f8df6ea90f377c125d918c85bea922bc654a7
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
opends/src/server/org/opends/server/replication/server/DbHandler.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ReplicationServer.java 21 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java 15 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -340,6 +340,8 @@
      flush();
    db.shutdown();
    DirectoryServer.deregisterMonitorProvider(
        dbMonitor.getMonitorInstanceName());
  }
  /**
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
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);
      }
    }
}