You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2016/09/30 09:00:31 UTC
[5/9] brooklyn-server git commit: BROOKLYN-325: on rebind,
set starting/stopping entity on-fire
BROOKLYN-325: on rebind, set starting/stopping entity on-fire
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/4bba21dd
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/4bba21dd
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/4bba21dd
Branch: refs/heads/master
Commit: 4bba21dd87e37c9cc7919630c8446b2f33c79c94
Parents: 643b19b
Author: Aled Sage <al...@gmail.com>
Authored: Thu Sep 29 14:23:46 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Sep 29 14:42:15 2016 +0100
----------------------------------------------------------------------
.../core/entity/lifecycle/ServiceStateLogic.java | 11 +++--------
.../rebind/AbstractBrooklynObjectRebindSupport.java | 8 ++++++--
.../core/mgmt/rebind/BasicEntityRebindSupport.java | 14 ++++++++++++++
.../brooklyn/core/mgmt/rebind/RebindIteration.java | 4 ----
4 files changed, 23 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4bba21dd/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 1b76059..df45d51 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
@@ -37,7 +37,6 @@ import org.apache.brooklyn.api.sensor.EnricherSpec.ExtensibleEnricherSpec;
import org.apache.brooklyn.api.sensor.Sensor;
import org.apache.brooklyn.api.sensor.SensorEvent;
import org.apache.brooklyn.api.sensor.SensorEventListener;
-import org.apache.brooklyn.config.ConfigInheritance;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.BrooklynLogging;
import org.apache.brooklyn.core.BrooklynLogging.LoggingLevel;
@@ -153,7 +152,7 @@ public class ServiceStateLogic {
}
public static void setExpectedState(Entity entity, Lifecycle state) {
- waitForServiceUpIfStateIsRunning(entity, state);
+ 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);
@@ -161,18 +160,14 @@ public class ServiceStateLogic {
((ComputeServiceState)enricher.get()).onEvent(null);
}
}
+
public static Lifecycle getExpectedState(Entity entity) {
Transition expected = entity.getAttribute(Attributes.SERVICE_STATE_EXPECTED);
if (expected==null) return null;
return expected.getState();
}
- public static void setActualState(Entity entity, Lifecycle state) {
- waitForServiceUpIfStateIsRunning(entity, state);
- ((EntityInternal)entity).sensors().set(Attributes.SERVICE_STATE_ACTUAL, state);
- }
-
- private static void waitForServiceUpIfStateIsRunning(Entity entity, Lifecycle state) {
+ private static void waitBrieflyForServiceUpIfStateIsRunning(Entity entity, Lifecycle state) {
if (state==Lifecycle.RUNNING) {
Boolean up = ((EntityInternal)entity).getAttribute(Attributes.SERVICE_UP);
if (!Boolean.TRUE.equals(up) && !Boolean.TRUE.equals(Entities.isReadOnly(entity))) {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4bba21dd/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/AbstractBrooklynObjectRebindSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/AbstractBrooklynObjectRebindSupport.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/AbstractBrooklynObjectRebindSupport.java
index 114a455..2dd9700 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/AbstractBrooklynObjectRebindSupport.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/AbstractBrooklynObjectRebindSupport.java
@@ -66,7 +66,7 @@ public abstract class AbstractBrooklynObjectRebindSupport<T extends Memento> imp
doReconstruct(rebindContext, memento);
if (!rebindContext.isReadOnly(instance))
- instance.rebind();
+ instanceRebind(instance);
}
protected abstract void addConfig(RebindContext rebindContext, T memento);
@@ -101,6 +101,10 @@ public abstract class AbstractBrooklynObjectRebindSupport<T extends Memento> imp
}
}
+ protected void instanceRebind(AbstractBrooklynObject instance) {
+ instance.rebind();
+ }
+
@Override
public void addPolicies(RebindContext rebindContext, T Memento) {
throw new UnsupportedOperationException();
@@ -115,7 +119,7 @@ public abstract class AbstractBrooklynObjectRebindSupport<T extends Memento> imp
public void addFeeds(RebindContext rebindContext, T Memento) {
throw new UnsupportedOperationException();
}
-
+
/**
* For overriding, to give custom reconstruct behaviour.
*
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4bba21dd/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/BasicEntityRebindSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/BasicEntityRebindSupport.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/BasicEntityRebindSupport.java
index 370173f..91a8d1b 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/BasicEntityRebindSupport.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/BasicEntityRebindSupport.java
@@ -34,14 +34,18 @@ import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.enricher.AbstractEnricher;
import org.apache.brooklyn.core.entity.AbstractEntity;
import org.apache.brooklyn.core.entity.EntityInternal;
+import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
+import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
import org.apache.brooklyn.core.feed.AbstractFeed;
import org.apache.brooklyn.core.mgmt.rebind.dto.MementosGenerators;
+import org.apache.brooklyn.core.objs.AbstractBrooklynObject;
import org.apache.brooklyn.core.policy.AbstractPolicy;
import org.apache.brooklyn.entity.group.AbstractGroupImpl;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
public class BasicEntityRebindSupport extends AbstractBrooklynObjectRebindSupport<EntityMemento> {
@@ -233,4 +237,14 @@ public class BasicEntityRebindSupport extends AbstractBrooklynObjectRebindSuppor
}
}
}
+
+ protected void instanceRebind(AbstractBrooklynObject instance) {
+ Preconditions.checkState(instance == entity, "Expected %s and %s to match, but different objects", instance, entity);
+ Lifecycle expectedState = ServiceStateLogic.getExpectedState(entity);
+ if (expectedState == Lifecycle.STARTING || expectedState == Lifecycle.STOPPING) {
+ LOG.warn("Entity "+entity);
+ ServiceStateLogic.setExpectedState(entity, Lifecycle.ON_FIRE);
+ }
+ super.instanceRebind(instance);
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4bba21dd/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
index 5d4685e..ccd3fe1 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
@@ -692,10 +692,6 @@ public abstract class RebindIteration {
if (oldMode!=null) {
oldEntities.remove(entity.getId());
}
-
- if (ServiceStateLogic.getExpectedState(entity) == Lifecycle.STARTING || ServiceStateLogic.getExpectedState(entity) == Lifecycle.STOPPING) {
- ServiceStateLogic.setExpectedState(entity, Lifecycle.ON_FIRE);
- }
}
List<Application> apps = Lists.newArrayList();
for (String rootId : getMementoRootEntities()) {