treat tasks submitted by transient tasks as transient by default
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/56909922 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/56909922 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/56909922 Branch: refs/heads/0.7.0-incubating Commit: 56909922a3d0b0ae389e63f9441ffd1de1bea709 Parents: f5336d6 Author: Alex Heneveld <[email protected]> Authored: Sat Jun 20 16:33:41 2015 -0700 Committer: Alex Heneveld <[email protected]> Committed: Wed Jun 24 00:40:33 2015 -0700 ---------------------------------------------------------------------- .../src/main/java/brooklyn/entity/basic/BrooklynTaskTags.java | 7 ++++++- .../main/java/brooklyn/util/task/BasicExecutionContext.java | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/56909922/core/src/main/java/brooklyn/entity/basic/BrooklynTaskTags.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/entity/basic/BrooklynTaskTags.java b/core/src/main/java/brooklyn/entity/basic/BrooklynTaskTags.java index 41b2371..e90a014 100644 --- a/core/src/main/java/brooklyn/entity/basic/BrooklynTaskTags.java +++ b/core/src/main/java/brooklyn/entity/basic/BrooklynTaskTags.java @@ -267,7 +267,12 @@ public class BrooklynTaskTags extends TaskTags { public static void setInessential(Task<?> task) { addTagDynamically(task, INESSENTIAL_TASK); } public static void setTransient(Task<?> task) { addTagDynamically(task, TRANSIENT_TASK_TAG); } - public static boolean isTransient(Task<?> task) { return hasTag(task, TRANSIENT_TASK_TAG); } + public static boolean isTransient(Task<?> task) { + if (hasTag(task, TRANSIENT_TASK_TAG)) return true; + if (hasTag(task, NON_TRANSIENT_TASK_TAG)) return true; + if (task.getSubmittedByTask()!=null) return isTransient(task.getSubmittedByTask()); + return false; + } public static boolean isSubTask(Task<?> task) { return hasTag(task, SUB_TASK_TAG); } public static boolean isEffectorTask(Task<?> task) { return hasTag(task, EFFECTOR_TAG); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/56909922/core/src/main/java/brooklyn/util/task/BasicExecutionContext.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/util/task/BasicExecutionContext.java b/core/src/main/java/brooklyn/util/task/BasicExecutionContext.java index bff6e2d..6346ecd 100644 --- a/core/src/main/java/brooklyn/util/task/BasicExecutionContext.java +++ b/core/src/main/java/brooklyn/util/task/BasicExecutionContext.java @@ -169,6 +169,11 @@ public class BasicExecutionContext extends AbstractExecutionContext { taskTags.addAll(tags); + if (Tasks.current()!=null && BrooklynTaskTags.isTransient(Tasks.current()) && !taskTags.contains(BrooklynTaskTags.NON_TRANSIENT_TASK_TAG)) { + // tag as transient if submitter is transient, unless explicitly tagged as non-transient + taskTags.add(BrooklynTaskTags.TRANSIENT_TASK_TAG); + } + final Object startCallback = properties.get("newTaskStartCallback"); properties.put("newTaskStartCallback", new Function<Object,Void>() { public Void apply(Object it) {
