brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ahgittin <...@git.apache.org>
Subject [GitHub] brooklyn-server pull request #816: Tasks code improvements - prep for better...
Date Thu, 28 Sep 2017 13:18:01 GMT
Github user ahgittin commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/816#discussion_r141614008
  
    --- Diff: core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java
---
    @@ -100,6 +123,121 @@ public ExecutionManager getExecutionManager() {
         @Override
         public Set<Task<?>> getTasks() { return executionManager.getTasksWithAllTags(tags);
}
     
    +    @Override
    +    public <T> T get(TaskAdaptable<T> task) {
    +        final TaskInternal<T> t = (TaskInternal<T>) task.asTask();
    +        
    +        if (t.isQueuedOrSubmitted()) {
    +            if (t.isDone()) {
    +                return t.getUnchecked();
    +            } else {
    +                throw new ImmediateUnsupportedException("Task is in progress and incomplete:
"+t);
    +            }
    +        }
    +        
    +        ContextSwitchingInfo<T> switchContextWrapper = getContextSwitchingTask(t,
Collections.emptyList(), false);
    +        if (switchContextWrapper!=null) {
    +            return switchContextWrapper.context.get(switchContextWrapper.wrapperTask);
    +        }
    +
    +        try {
    +            return runInSameThread(t, new Callable<Maybe<T>>() {
    --- End diff --
    
    This is a replacement for `submit(task).get()` -- not just `submit(task)` followed by
a lock being released.  As such I think the risk of deadlock can only go down as the job will
hold the callers locks as opposed to the submitting thread holding them while blocking on
this thread, no?  A change in the other direction could introduce deadlocks so we'd have to
be careful going the other way, make sure the submitter releases locks before blocking, but
think we're fine here.


---

Mime
View raw message