don't wait synchronously for service_up on an application if we know there is 
an error


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

Branch: refs/heads/master
Commit: e1778fc8f506af52f0512b83214c4bac26773991
Parents: 661d92f
Author: Alex Heneveld <[email protected]>
Authored: Tue Apr 25 16:10:44 2017 +0100
Committer: Alex Heneveld <[email protected]>
Committed: Fri Apr 28 14:09:51 2017 +0100

----------------------------------------------------------------------
 .../brooklyn/core/entity/AbstractApplication.java       |  6 ++++--
 .../core/entity/lifecycle/ServiceStateLogic.java        | 12 +++++++++++-
 2 files changed, 15 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e1778fc8/core/src/main/java/org/apache/brooklyn/core/entity/AbstractApplication.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractApplication.java 
b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractApplication.java
index 86007cd..3cbee66 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractApplication.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractApplication.java
@@ -181,14 +181,16 @@ public abstract class AbstractApplication extends 
AbstractEntity implements Star
             
         } catch (Exception e) {
             recordApplicationEvent(Lifecycle.ON_FIRE);
+            ServiceStateLogic.setExpectedStateRunningWithErrors(this);
+            
             // no need to log here; the effector invocation should do that
             throw Exceptions.propagate(e);
             
         } finally {
             ServiceStateLogic.ServiceNotUpLogic.clearNotUpIndicator(this, 
Attributes.SERVICE_STATE_ACTUAL);
-            ServiceStateLogic.setExpectedState(this, Lifecycle.RUNNING);
         }
-
+        
+        ServiceStateLogic.setExpectedState(this, Lifecycle.RUNNING);
         setExpectedStateAndRecordLifecycleEvent(Lifecycle.RUNNING);
 
         logApplicationLifecycle("Started");

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e1778fc8/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/ServiceStateLogic.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/ServiceStateLogic.java
 
b/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/ServiceStateLogic.java
index 386eb56..bfde073 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/ServiceStateLogic.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/ServiceStateLogic.java
@@ -156,7 +156,17 @@ public class ServiceStateLogic {
     }
 
     public static void setExpectedState(Entity entity, Lifecycle state) {
-        waitBrieflyForServiceUpIfStateIsRunning(entity, state);
+        setExpectedState(entity, state, 
entity.getAttribute(SERVICE_STATE_ACTUAL)!=null && 
entity.getAttribute(SERVICE_STATE_ACTUAL)!=Lifecycle.ON_FIRE);
+    }
+    
+    public static void setExpectedStateRunningWithErrors(Entity entity) {
+        setExpectedState(entity, Lifecycle.RUNNING, false);
+    }
+    
+    private static void setExpectedState(Entity entity, Lifecycle state, 
boolean waitBrieflyForServiceUpIfRunning) {
+        if (waitBrieflyForServiceUpIfRunning) {
+            waitBrieflyForServiceUpIfStateIsRunning(entity, state);
+        }
         
((EntityInternal)entity).sensors().set(Attributes.SERVICE_STATE_EXPECTED, new 
Lifecycle.Transition(state, new Date()));
 
         Maybe<Enricher> enricher = 
EntityAdjuncts.tryFindWithUniqueTag(entity.enrichers(), 
ComputeServiceState.DEFAULT_ENRICHER_UNIQUE_TAG);

Reply via email to