From 8ae2d9b53e83389cece9023946768d7ac801d085 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Tue, 25 Sep 2007 17:28:41 +0000
Subject: [PATCH] For schedulable utilities have return code reflect success of scheduled task when monitoring task in synchronous mode

---
 opendj-sdk/opends/src/server/org/opends/server/tools/tasks/TaskTool.java    |    9 +++++++--
 opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskState.java |    1 +
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskState.java b/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskState.java
index c0b36fc..fb5dbaf 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskState.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/task/TaskState.java
@@ -216,6 +216,7 @@
       case WAITING_ON_START_TIME:
       case WAITING_ON_DEPENDENCY:
       case RUNNING:
+      case STOPPED_BY_ERROR:
         return false;
       default:
         return true;
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/tasks/TaskTool.java b/opendj-sdk/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
index 4ff427f..cf93e98 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
@@ -41,6 +41,7 @@
 import org.opends.server.types.LDAPException;
 import org.opends.server.types.OpenDsException;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.backends.task.TaskState;
 import org.opends.messages.Message;
 import static org.opends.messages.ToolMessages.*;
 
@@ -215,9 +216,9 @@
 
           // Poll the task printing log messages until finished
           String taskId = taskEntry.getId();
-          taskEntry = tc.getTaskEntry(taskId);
           Set<Message> printedLogMessages = new HashSet<Message>();
           do {
+            taskEntry = tc.getTaskEntry(taskId);
             List<Message> logs = taskEntry.getLogMessages();
             for (Message log : logs) {
               if (!printedLogMessages.contains(log)) {
@@ -232,8 +233,12 @@
               // ignore
             }
 
-            taskEntry = tc.getTaskEntry(taskId);
           } while (!taskEntry.isDone());
+          if (TaskState.isSuccessful(taskEntry.getTaskState())) {
+            return 0;
+          } else {
+            return 1;
+          }
         }
         ret = 0;
       } catch (LDAPConnectionException e) {

--
Gitblit v1.10.0