This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit a76ab8c991c7c44b96d93242e01c4e8c3fa10458
Author: Alex Heneveld <[email protected]>
AuthorDate: Thu Oct 21 21:22:09 2021 +0100

    fix logic around checking done-ness of scheduled tasks
---
 .../src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java | 2 ++
 .../main/java/org/apache/brooklyn/util/core/task/ScheduledTask.java | 6 ++++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java 
b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
index 3a00082..ee4a1c3 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
@@ -345,9 +345,11 @@ public class BasicTask<T> implements TaskInternal<T> {
     @Override
     public boolean isDone(boolean andTaskNotRunning) {
         if (!cancelled && !(internalFuture!=null && internalFuture.isDone()) 
&& endTimeUtc<=0) {
+            // done if the internal future is done and end time is set
             return false;
         }
         if (andTaskNotRunning && cancelled && isBegun() && endTimeUtc<=0) {
+            // if not-running confirmation requested, for cancelled tasks, if 
begun, wait for endTime to be set
             return false;
         }
         return true;
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/task/ScheduledTask.java 
b/core/src/main/java/org/apache/brooklyn/util/core/task/ScheduledTask.java
index 3b23ac2..2c07fa7 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ScheduledTask.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ScheduledTask.java
@@ -231,10 +231,12 @@ public class ScheduledTask extends BasicTask<Object> {
     
     @Override
     public boolean isDone(boolean andTaskNoLongerRunning) {
+        boolean done = isCancelled() || (maxIterations!=null && maxIterations 
<= runCount) || (period==null && nextRun!=null && nextRun.isDone());
         if (andTaskNoLongerRunning) {
-            return super.isDone(true);
+            return done && super.isDone(true);
+        } else {
+            return done;
         }
-        return isCancelled() || (maxIterations!=null && maxIterations <= 
runCount) || (period==null && nextRun!=null && nextRun.isDone());
     }
     
     public synchronized void blockUntilFirstScheduleStarted() {

Reply via email to