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() {
