treat tasks submitted by transient tasks as transient by default
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/63e8c061 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/63e8c061 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/63e8c061 Branch: refs/heads/master Commit: 63e8c061634bb19f0cfe3f253b436aaa7cb0668e Parents: 61d4821 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/incubator-brooklyn/blob/63e8c061/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/incubator-brooklyn/blob/63e8c061/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) {
