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