From 307ca59f47c62824732c29352e9360e5056bce59 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Mon, 23 Apr 2012 22:18:50 +0000
Subject: [PATCH] Fix OPENDJ-469.  This last commit resolves issues with the Nightly tests.

---
 opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index cb56540..3df579b 100644
--- a/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -2618,7 +2618,7 @@
   public void replay(LDAPUpdateMsg msg)
   {
     Operation op = null;
-    boolean done = false;
+    boolean replayDone = false;
     boolean dependency = false;
     ChangeNumber changeNumber = null;
     int retryCount = 10;
@@ -2633,7 +2633,7 @@
         op = msg.createOperation(conn);
         dependency = remotePendingChanges.checkDependencies(op, msg);
 
-        while ((!dependency) && (!done) && (retryCount-- > 0))
+        while ((!dependency) && (!replayDone) && (retryCount-- > 0))
         {
           // Try replay the operation
           op.setInternalOperation(true);
@@ -2656,7 +2656,7 @@
               // was a no-op. For example, an add which has already been
               // replayed, or a modify DN operation on an entry which has been
               // renamed by a more recent modify DN.
-              done = true;
+              replayDone = true;
             }
             else if (op instanceof ModifyOperation)
             {
@@ -2664,14 +2664,14 @@
               dependency = remotePendingChanges
                   .checkDependencies(newOp);
               ModifyMsg modifyMsg = (ModifyMsg) msg;
-              done = solveNamingConflict(newOp, modifyMsg);
+              replayDone = solveNamingConflict(newOp, modifyMsg);
             }
             else if (op instanceof DeleteOperation)
             {
               DeleteOperation newOp = (DeleteOperation) op;
               dependency = remotePendingChanges
                   .checkDependencies(newOp);
-              done = solveNamingConflict(newOp, msg);
+              replayDone = solveNamingConflict(newOp, msg);
             }
             else if (op instanceof AddOperation)
             {
@@ -2679,19 +2679,19 @@
               AddMsg addMsg = (AddMsg) msg;
               dependency = remotePendingChanges
                   .checkDependencies(newOp);
-              done = solveNamingConflict(newOp, addMsg);
+              replayDone = solveNamingConflict(newOp, addMsg);
             }
             else if (op instanceof ModifyDNOperationBasis)
             {
               ModifyDNOperationBasis newOp = (ModifyDNOperationBasis) op;
-              done = solveNamingConflict(newOp, msg);
+              replayDone = solveNamingConflict(newOp, msg);
             }
             else
             {
-              done = true; // unknown type of operation ?!
+              replayDone = true; // unknown type of operation ?!
             }
 
-            if (done)
+            if (replayDone)
             {
               // the update became a dummy update and the result
               // of the conflict resolution phase is to do nothing.
@@ -2711,11 +2711,11 @@
           }
           else
           {
-            done = true;
+            replayDone = true;
           }
         }
 
-        if (!done && !dependency)
+        if (!replayDone && !dependency)
         {
           // Continue with the next change but the servers could now become
           // inconsistent.
@@ -2781,7 +2781,7 @@
       msg = remotePendingChanges.getNextUpdate();
 
       // Prepare restart of loop
-      done = false;
+      replayDone = false;
       dependency = false;
       changeNumber = null;
       retryCount = 10;
@@ -4178,6 +4178,8 @@
         importConfig.setIncludeBranches(includeBranches);
         importConfig.setAppendToExistingData(false);
         importConfig.setSkipDNValidation(true);
+        // We should not validate schema for replication
+        importConfig.setValidateSchema(false);
         // Allow fractional replication ldif import plugin to be called
         importConfig.setInvokeImportPlugins(true);
         // Reset the follow import flag and message before starting the import
@@ -4590,6 +4592,8 @@
                 "ds-cfg-enabled: " + (!getBackend().isPrivateBackend()));
             LDIFImportConfig ldifImportConfig = new LDIFImportConfig(
                 new StringReader(ldif));
+            // No need to validate schema in replication
+            ldifImportConfig.setValidateSchema(false);
             LDIFReader reader = new LDIFReader(ldifImportConfig);
             Entry eclEntry = reader.readEntry();
             DirectoryServer.getConfigHandler().addEntry(eclEntry, null);

--
Gitblit v1.10.0