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();