From 2f5327a1abb31f9cc74bad9d6678f3993bf53fd5 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Fri, 17 Apr 2009 13:05:48 +0000
Subject: [PATCH] - [Issue 3336] take appropriate action for failed dependencies.

---
 opends/src/server/org/opends/server/backends/task/TaskScheduler.java |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
index e67b8ff..ab81c1a 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -1011,12 +1011,31 @@
     LinkedList<String> dependencyIDs = task.getDependencyIDs();
     if (dependencyIDs != null)
     {
-      for (String dependencyID : task.getDependencyIDs())
+      for (String dependencyID : dependencyIDs)
       {
         Task t = tasks.get(dependencyID);
-        if ((t != null) && (! TaskState.isDone(t.getTaskState())))
+        if (t != null)
         {
-          return TaskState.WAITING_ON_DEPENDENCY;
+          TaskState tState = t.getTaskState();
+          if (!TaskState.isDone(tState))
+          {
+            return TaskState.WAITING_ON_DEPENDENCY;
+          }
+          if (!TaskState.isSuccessful(tState))
+          {
+            FailedDependencyAction action = task.getFailedDependencyAction();
+            switch (action)
+            {
+              case CANCEL:
+                cancelTask(task.getTaskID());
+                return task.getTaskState();
+              case DISABLE:
+                task.setTaskState(TaskState.DISABLED);
+                return task.getTaskState();
+              default:
+                break;
+            }
+          }
         }
       }
     }

--
Gitblit v1.10.0