From 33661c6abf51a0e7f5b5a0e17acd3fff712e1ac8 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Sat, 13 Jun 2009 04:42:25 +0000
Subject: [PATCH] - attempt to fix possible race conditions when tasks changing their state upon completion.

---
 opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java |   26 +++++---------------------
 1 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java
index 8f66618..8d88c57 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/task/Task.java
@@ -1145,10 +1145,11 @@
     setTaskState(TaskState.RUNNING);
     taskScheduler.writeState();
 
+    TaskState taskState = this.taskState;
+
     try
     {
-      TaskState taskState = runTask();
-      setTaskState(taskState);
+      taskState = runTask();
     }
     catch (Exception e)
     {
@@ -1157,29 +1158,12 @@
         TRACER.debugCaught(DebugLogLevel.ERROR, e);
       }
 
-      setTaskState(TaskState.STOPPED_BY_ERROR);
+      taskState = TaskState.STOPPED_BY_ERROR;
 
       Message message = ERR_TASK_EXECUTE_FAILED.get(
           String.valueOf(taskEntry.getDN()), stackTraceToSingleLineString(e));
       logError(message);
     }
-    finally
-    {
-      setCompletionTime(TimeThread.getTime());
-      taskScheduler.writeState();
-    }
-
-    try
-    {
-      sendNotificationEMailMessage();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-    }
 
     return taskState;
   }
@@ -1193,7 +1177,7 @@
    * @throws  MessagingException  If a problem occurs while attempting to send
    *                              the message.
    */
-  private void sendNotificationEMailMessage()
+  protected void sendNotificationEMailMessage()
           throws MessagingException
   {
     if (DirectoryServer.mailServerConfigured())

--
Gitblit v1.10.0