From 7ebe8d5d2fedf1547353611bca934c18fa138b9f 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

---
 opends/src/server/org/opends/server/tools/tasks/TaskTool.java |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/tasks/TaskTool.java b/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
index 4ff427f..cf93e98 100644
--- a/opends/src/server/org/opends/server/tools/tasks/TaskTool.java
+++ b/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