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 2014/07/29 21:32:00 UTC

[05/31] git commit: include blocking details when waiting for service up to invoke an effector on a child

include blocking details when waiting for service up to invoke an effector on a child


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/03944674
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/03944674
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/03944674

Branch: refs/heads/master
Commit: 039446749c3c6926abc51a3b0b21a8b14963851c
Parents: bbfbd37
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Jul 21 20:38:49 2014 -0400
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Jul 29 10:41:11 2014 -0400

----------------------------------------------------------------------
 .../entity/webapp/DynamicWebAppClusterImpl.java | 43 ++++++++++++--------
 1 file changed, 25 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/03944674/software/webapp/src/main/java/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java b/software/webapp/src/main/java/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
index 3378972..f62f8eb 100644
--- a/software/webapp/src/main/java/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
+++ b/software/webapp/src/main/java/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
@@ -168,27 +168,34 @@ public class DynamicWebAppClusterImpl extends DynamicClusterImpl implements Dyna
         return Tasks.<T>builder().name(name).dynamic(true).body(new Callable<T>() {
             @Override
             public T call() {
-                while (true) {
-                    if (!Entities.isManaged(target)) {
-                        Tasks.markInessential();
-                        throw new IllegalStateException("Target "+target+" is no longer managed");
-                    }
-                    if (target.getAttribute(Attributes.SERVICE_UP)) {
-                        TaskTags.markInessential(task);
-                        DynamicTasks.queue(task);
-                        try {
-                            return task.asTask().getUnchecked();
-                        } catch (Exception e) {
-                            if (Entities.isManaged(target)) {
-                                throw Exceptions.propagate(e);
-                            } else {
-                                Tasks.markInessential();
-                                throw new IllegalStateException("Target "+target+" is no longer managed", e);
+                try {
+                    while (true) {
+                        if (!Entities.isManaged(target)) {
+                            Tasks.markInessential();
+                            throw new IllegalStateException("Target "+target+" is no longer managed");
+                        }
+                        if (target.getAttribute(Attributes.SERVICE_UP)) {
+                            Tasks.resetBlockingDetails();
+                            TaskTags.markInessential(task);
+                            DynamicTasks.queue(task);
+                            try {
+                                return task.asTask().getUnchecked();
+                            } catch (Exception e) {
+                                if (Entities.isManaged(target)) {
+                                    throw Exceptions.propagate(e);
+                                } else {
+                                    Tasks.markInessential();
+                                    throw new IllegalStateException("Target "+target+" is no longer managed", e);
+                                }
                             }
+                        } else {
+                            Tasks.setBlockingDetails("Waiting on "+target+" to be ready");
                         }
+                        // TODO replace with subscription?
+                        Time.sleep(Duration.ONE_SECOND);
                     }
-                    // TODO replace with subscription?
-                    Time.sleep(Duration.ONE_SECOND);
+                } finally {
+                    Tasks.resetBlockingDetails();
                 }
             }
         }).build();