You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2017/10/03 14:24:03 UTC

[26/35] brooklyn-server git commit: change TaskInternal.setSubmittedBy(Maybe) to take a String

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 <al...@cloudsoftcorp.com>
Authored: Thu Sep 28 15:41:52 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
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();