change TaskInternal.setSubmittedBy(Maybe) to take a String
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/ed4eeba2 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/ed4eeba2 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/ed4eeba2 Branch: refs/heads/master Commit: ed4eeba2f97545d5343f33ff7d08febad52bc523 Parents: 4b7844c Author: Alex Heneveld <[email protected]> Authored: Thu Sep 28 15:41:52 2017 +0100 Committer: Alex Heneveld <[email protected]> Committed: Thu Sep 28 15:41:52 2017 +0100 ---------------------------------------------------------------------- .../util/core/task/BasicExecutionManager.java | 3 ++- .../apache/brooklyn/util/core/task/BasicTask.java | 18 ++++++------------ .../brooklyn/util/core/task/ForwardingTask.java | 4 ++-- .../brooklyn/util/core/task/TaskInternal.java | 3 ++- 4 files changed, 12 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ed4eeba2/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java index c2bf12c..e71b43e 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java @@ -755,7 +755,8 @@ public class BasicExecutionManager implements ExecutionManager { Task<?> currentTask = Tasks.current(); if (currentTask!=null) ((TaskInternal<?>)task).setSubmittedByTask( // do this instead of soft reference (2017-09) as soft refs impact GC - Maybe.of(new TaskLookup(this, currentTask)) ); + Maybe.of(new TaskLookup(this, currentTask)), + currentTask.getId()); } ((TaskInternal<?>)task).setSubmitTimeUtc(System.currentTimeMillis()); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ed4eeba2/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java ---------------------------------------------------------------------- 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 9367b4a..4f448ec 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 @@ -43,11 +43,9 @@ import java.util.concurrent.TimeoutException; import org.apache.brooklyn.api.mgmt.HasTaskChildren; import org.apache.brooklyn.api.mgmt.Task; -import org.apache.brooklyn.api.objs.Identifiable; import org.apache.brooklyn.util.JavaGroovyEquivalents; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.guava.Maybe; -import org.apache.brooklyn.util.guava.Maybe.MaybeSupplier; import org.apache.brooklyn.util.text.Identifiers; import org.apache.brooklyn.util.text.Strings; import org.apache.brooklyn.util.time.Duration; @@ -58,7 +56,6 @@ import org.slf4j.LoggerFactory; import com.google.common.annotations.Beta; import com.google.common.base.Function; import com.google.common.base.Objects; -import com.google.common.base.Supplier; import com.google.common.base.Throwables; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; @@ -204,6 +201,7 @@ public class BasicTask<T> implements TaskInternal<T> { protected long startTimeUtc = -1; protected long endTimeUtc = -1; protected Maybe<Task<?>> submittedByTask; + protected String submittedByTaskId; protected volatile Thread thread = null; protected volatile boolean cancelled = false; @@ -247,14 +245,9 @@ public class BasicTask<T> implements TaskInternal<T> { } @Override public String getSubmittedByTaskId() { + if (submittedByTaskId!=null) return submittedByTaskId; if (submittedByTask==null || submittedByTask.isAbsent()) return null; - if (submittedByTask instanceof MaybeSupplier) { - Supplier<?> supplier = ((MaybeSupplier<?>)submittedByTask).getSupplier(); - if (supplier instanceof Identifiable) { - return ((Identifiable)supplier).getId(); - } - } - return submittedByTask.get().getId(); + throw new IllegalStateException("Task was set up with a submitted task but no task ID"); } /** the thread where the task is running, if it is running */ @@ -917,11 +910,12 @@ public class BasicTask<T> implements TaskInternal<T> { @Override public void setSubmittedByTask(Task<?> task) { - setSubmittedByTask(Maybe.of(task)); + setSubmittedByTask(Maybe.of(task), task==null ? null : task.getId()); } @Override - public void setSubmittedByTask(Maybe<Task<?>> taskM) { + public void setSubmittedByTask(Maybe<Task<?>> taskM, String taskId) { submittedByTask = taskM; + submittedByTaskId = taskId; } @Override http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ed4eeba2/core/src/main/java/org/apache/brooklyn/util/core/task/ForwardingTask.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ForwardingTask.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ForwardingTask.java index 81bd972..1254c35 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/task/ForwardingTask.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ForwardingTask.java @@ -314,8 +314,8 @@ public abstract class ForwardingTask<T> extends ForwardingObject implements Task } @Override - public void setSubmittedByTask(Maybe<Task<?>> taskM) { - delegate().setSubmittedByTask(taskM); + public void setSubmittedByTask(Maybe<Task<?>> taskM, String taskId) { + delegate().setSubmittedByTask(taskM, taskId); } @Override http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ed4eeba2/core/src/main/java/org/apache/brooklyn/util/core/task/TaskInternal.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/TaskInternal.java b/core/src/main/java/org/apache/brooklyn/util/core/task/TaskInternal.java index 7c82f6e..5bf5ae6 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/task/TaskInternal.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/task/TaskInternal.java @@ -116,7 +116,8 @@ public interface TaskInternal<T> extends Task<T>, TaskInternalCancellableWithMod void setSubmitTimeUtc(long currentTimeMillis); void setSubmittedByTask(Task<?> task); - void setSubmittedByTask(Maybe<Task<?>> task); + /** Variant of {@link #setSubmittedByTask(Task)} which allows better support for GC'd tasks. */ + void setSubmittedByTask(Maybe<Task<?>> task, String taskId); Set<Object> getMutableTags();
