From 9516aa8db8085f0fa983117ef4af952dfa8ae3f1 Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Thu, 25 Oct 2007 13:06:57 +0000
Subject: [PATCH] Fix 2487 Server does not update properly the task entry when trying to initialize cn=schema between two servers

---
 opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java |  123 ++++++++++++++++++++--------------------
 1 files changed, 61 insertions(+), 62 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java b/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
index 3e8edc1..012ea9b 100644
--- a/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
+++ b/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
@@ -66,7 +66,6 @@
 import org.opends.server.api.SynchronizationProvider;
 import org.opends.server.backends.jeb.BackendImpl;
 import org.opends.server.backends.task.Task;
-import org.opends.server.backends.task.TaskState;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DeleteOperation;
@@ -324,17 +323,6 @@
         }
       }
     }
-
-    /**
-     * Update the state of the task.
-     */
-    protected TaskState updateTaskCompletionState()
-    {
-      if (exception == null)
-        return TaskState.COMPLETED_SUCCESSFULLY;
-      else
-        return TaskState.STOPPED_BY_ERROR;
-    }
   }
 
   /**
@@ -2607,7 +2595,7 @@
       {
         // Update the task that initiated the import
         ((InitializeTask)ieContext.initializeTask).
-        setState(ieContext.updateTaskCompletionState(),ieContext.exception);
+        updateTaskCompletionState(ieContext.exception);
 
         releaseIEContext();
       }
@@ -3121,74 +3109,88 @@
 
     Backend backend = retrievesBackend(baseDN);
 
-    if (!backend.supportsLDIFImport())
-    {
-      Message message = ERR_INIT_IMPORT_NOT_SUPPORTED.get(
-                          backend.getBackendID().toString());
-      logError(message);
-      throw new DirectoryException(ResultCode.OTHER, message);
-    }
-
     try
     {
-      if (initializeMessage.getRequestorID() == serverId)
+      if (!backend.supportsLDIFImport())
       {
-        // The import responds to a request we did so the IEContext
-        // is already acquired
+        Message message = ERR_INIT_IMPORT_NOT_SUPPORTED.get(
+            backend.getBackendID().toString());
+        logError(message);
+        de = new DirectoryException(ResultCode.OTHER, message);
       }
       else
       {
-        acquireIEContext();
+        if (initializeMessage.getRequestorID() == serverId)
+        {
+          // The import responds to a request we did so the IEContext
+          // is already acquired
+        }
+        else
+        {
+          acquireIEContext();
+        }
+
+        ieContext.importSource = initializeMessage.getsenderID();
+        ieContext.entryLeftCount = initializeMessage.getEntryCount();
+        ieContext.initImportExportCounters(initializeMessage.getEntryCount());
+
+        preBackendImport(backend);
+
+        ieContext.ldifImportInputStream = new ReplLDIFInputStream(this);
+        importConfig =
+          new LDIFImportConfig(ieContext.ldifImportInputStream);
+        List<DN> includeBranches = new ArrayList<DN>();
+        includeBranches.add(this.baseDN);
+        importConfig.setIncludeBranches(includeBranches);
+        importConfig.setAppendToExistingData(false);
+
+        // TODO How to deal with rejected entries during the import
+        // importConfig.writeRejectedEntries("rejectedImport",
+        // ExistingFileBehavior.OVERWRITE);
+
+        // Process import
+        backend.importLDIF(importConfig);
+
+        if (debugEnabled())
+          TRACER.debugInfo("The import has ended successfully on " +
+              this.baseDN);
+        stateSavingDisabled = false;
       }
-
-      ieContext.importSource = initializeMessage.getsenderID();
-      ieContext.entryLeftCount = initializeMessage.getEntryCount();
-      ieContext.initImportExportCounters(initializeMessage.getEntryCount());
-
-      preBackendImport(backend);
-
-      ieContext.ldifImportInputStream = new ReplLDIFInputStream(this);
-      importConfig =
-        new LDIFImportConfig(ieContext.ldifImportInputStream);
-      List<DN> includeBranches = new ArrayList<DN>();
-      includeBranches.add(this.baseDN);
-      importConfig.setIncludeBranches(includeBranches);
-      importConfig.setAppendToExistingData(false);
-
-      // TODO How to deal with rejected entries during the import
-      // importConfig.writeRejectedEntries("rejectedImport",
-      // ExistingFileBehavior.OVERWRITE);
-
-      // Process import
-      backend.importLDIF(importConfig);
-
-      if (debugEnabled())
-        TRACER.debugInfo("The import has ended successfully on " +
-          this.baseDN);
-      stateSavingDisabled = false;
-
     }
     catch(Exception e)
     {
       de = new DirectoryException(ResultCode.OTHER,
-                                  Message.raw(e.getLocalizedMessage()));
+          Message.raw(e.getLocalizedMessage()));
     }
     finally
     {
-      // Cleanup
-      importConfig.close();
+      if ((ieContext != null)  && (ieContext.exception != null))
+        de = ieContext.exception;
 
-      // Re-enable backend
-      closeBackendImport(backend);
+      // Cleanup
+      if (importConfig != null)
+      {
+        importConfig.close();
+
+        // Re-enable backend
+        closeBackendImport(backend);
+      }
 
       // Update the task that initiated the import
       if ((ieContext != null ) && (ieContext.initializeTask != null))
       {
         ((InitializeTask)ieContext.initializeTask).
-        setState(ieContext.updateTaskCompletionState(),ieContext.exception);
+        updateTaskCompletionState(de);
       }
       releaseIEContext();
-
+    }
+    // Sends up the root error.
+    if (de != null)
+    {
+      throw de;
+    }
+    else
+    {
       // Retrieves the generation ID associated with the data imported
       try
       {
@@ -3211,9 +3213,6 @@
       // Re-exchange generationID and state with RS
       broker.reStart();
     }
-    // Sends up the root error.
-    if (de != null)
-      throw de;
   }
 
   /**

--
Gitblit v1.10.0