From b3c070bb2107aec085fa3f16ba1c118a71e30a7b Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Wed, 13 Feb 2008 09:14:39 +0000
Subject: [PATCH] Fix 2911 - dsreplication pre/post-external initialisation fails to clear all the changelogs

---
 opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java b/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
index cc6afcb..81798bf 100644
--- a/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
+++ b/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
@@ -112,6 +112,8 @@
    */
   private static int replayThreadNumber = 10;
 
+  private boolean isRegistered = false;
+
   /**
    * Finds the domain for a given DN.
    *
@@ -200,7 +202,6 @@
     }
 
     domains.put(domain.getBaseDN(), domain);
-    domain.start();
     return domain;
   }
 
@@ -321,7 +322,11 @@
   {
     try
     {
-      createNewDomain(configuration);
+      ReplicationDomain rd = createNewDomain(configuration);
+      if (isRegistered)
+      {
+        rd.start();
+      }
       return new ConfigChangeResult(ResultCode.SUCCESS, false);
     } catch (ConfigException e)
     {
@@ -507,6 +512,8 @@
   @Override
   public void finalizeSynchronizationProvider()
   {
+    isRegistered = false;
+
     // shutdown all the domains
     for (ReplicationDomain domain : domains.values())
     {
@@ -731,6 +738,18 @@
 
     return new ConfigChangeResult(ResultCode.SUCCESS, false);
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  public void completeSynchronizationProvider()
+  {
+    isRegistered = true;
+
+    // start all the domains
+    for (ReplicationDomain domain : domains.values())
+    {
+      domain.start();
+    }
+  }
 }
-
-

--
Gitblit v1.10.0