From 5c2f7331e6576e488cd2ef91b54e257e2b7e3778 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Tue, 15 Jan 2008 13:55:33 +0000
Subject: [PATCH] Fix for issue 2805 : purge delay parameter not taken into account online.

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java               |    2 ++
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java       |   23 ++++++++++++++++++-----
 opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java |   15 ++++++++++++++-
 3 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
index a3dba73..f3aabe9 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -340,6 +340,8 @@
       flush();
 
     db.shutdown();
+    DirectoryServer.deregisterMonitorProvider(
+        dbMonitor.getMonitorInstanceName());
   }
 
   /**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index bf81c46..31088dd 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/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
-                        // be deleted from the persistent storage.
+
+  // 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
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index d97d2ad..4d9cf4c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/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);
+      }
+    }
 }

--
Gitblit v1.10.0