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