From ee928df462895d227253bdf68bba1b3d493be8fa Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Wed, 09 Dec 2009 13:39:32 +0000
Subject: [PATCH] Improve error handling on entryuid mapping in ECL

---
 opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java |   39 +++++++++++++++++++++++++++++++--------
 1 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java b/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
index a3ffd42..835375b 100644
--- a/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
@@ -29,12 +29,14 @@
 
 
 import static org.opends.messages.CoreMessages.*;
+import static org.opends.messages.ReplicationMessages.*;
 import static org.opends.server.loggers.ErrorLogger.logError;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.loggers.debug.DebugLogger.getTracer;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.getExceptionMessage;
 import static org.opends.server.util.StaticUtils.needsBase64Encoding;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -1169,14 +1171,35 @@
           DirectoryServer.getAttributeType("targetuniqueid")) == null)
           attributeType =
               DirectoryServer.getDefaultAttributeType("targetuniqueid");
-        a = Attributes.create(attributeType,
-            ECLSearchOperation.openDsToSunDseeNsUniqueId(targetUUID));
-        attrList = new ArrayList<Attribute>(1);
-        attrList.add(a);
-        if(attributeType.isOperational())
-          operationalAttrs.put(attributeType, attrList);
-        else
-          uAttrs.put(attributeType, attrList);
+        String dseeValue = null;
+        try
+        {
+          ECLSearchOperation.openDsToSunDseeNsUniqueId(targetUUID);
+        }
+        catch(Exception e)
+        {
+          Message errMessage =
+            NOTE_ERR_ENTRY_UID_DSEE_MAPPING.get(
+                targetDN.toNormalizedString(),
+                targetUUID,
+                e.getLocalizedMessage());
+          logError(errMessage);
+          if (debugEnabled())
+            TRACER.debugCaught(DebugLogLevel.ERROR, e);
+        }
+
+        // If the mapping fails, we don't want to stop the operation
+        // or not return this entry.
+        if (dseeValue != null)
+        {
+          a = Attributes.create(attributeType, dseeValue);
+          attrList = new ArrayList<Attribute>(1);
+          attrList.add(a);
+          if(attributeType.isOperational())
+            operationalAttrs.put(attributeType, attrList);
+          else
+            uAttrs.put(attributeType, attrList);
+        }
       }
     }
 

--
Gitblit v1.10.0