From dd9090e630e82d58abdc1bfea933bbe02a3a2485 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 03 Jan 2008 16:35:57 +0000
Subject: [PATCH]  fix for 2794 : Delete are sometimes not replayed when they immediately follow a moddn    When a delete is done on the new name of an entry immediately after renaming it, the dependencies between these 2 operations are not detected and the delete can therefore be replayed without waiting for the moddn to complete. This cause the delete to fail and not being replayed.

---
 opends/src/server/org/opends/server/replication/protocol/ModifyDNMsg.java |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/protocol/ModifyDNMsg.java b/opends/src/server/org/opends/server/replication/protocol/ModifyDNMsg.java
index 5c3757d..818c328 100644
--- a/opends/src/server/org/opends/server/replication/protocol/ModifyDNMsg.java
+++ b/opends/src/server/org/opends/server/replication/protocol/ModifyDNMsg.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2006-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.replication.protocol;
 
@@ -38,6 +38,7 @@
 import org.opends.server.types.AbstractOperation;
 import org.opends.server.types.DN;
 import org.opends.server.types.DirectoryException;
+import org.opends.server.types.RDN;
 import org.opends.server.types.operation.PostOperationModifyDNOperation;
 
 /**
@@ -279,8 +280,18 @@
   {
     try
     {
-      String newStringDN = newRDN + "," + newSuperior;
-      DN newDN = DN.decode(newStringDN);
+      DN newDN;
+      if (newSuperior == null)
+      {
+        DN parentDn = DN.decode(this.getDn()).getParent();
+        newDN = parentDn.concat(RDN.decode(newRDN));
+      }
+      else
+      {
+        String newStringDN = newRDN + "," + newSuperior;
+        newDN = DN.decode(newStringDN);
+      }
+
 
       if (newDN.isAncestorOf(targetDn))
         return true;

--
Gitblit v1.10.0