brooklyn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aleds...@apache.org
Subject [06/19] incubator-brooklyn git commit: Umanage BrooklynNode only if machine is released.
Date Thu, 19 Mar 2015 14:07:24 GMT
Umanage BrooklynNode only if machine is released.

Previous logic of looking at the effector paramaters wasn't working in all cases as IF_NOT_STOPPED
depends on external factors. Instead check if the SshMachineLocation is still around.


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

Branch: refs/heads/master
Commit: 8343385f257d21021896db52fbbfe35c5f0e7243
Parents: 92951dc
Author: Svetoslav Neykov <svetoslav.neykov@cloudsoftcorp.com>
Authored: Fri Feb 27 17:08:46 2015 +0200
Committer: Svetoslav Neykov <svetoslav.neykov@cloudsoftcorp.com>
Committed: Thu Mar 19 16:01:29 2015 +0200

----------------------------------------------------------------------
 .../entity/brooklynnode/BrooklynNodeImpl.java         | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8343385f/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
index 2ac59de..952d32b 100644
--- a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
+++ b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
@@ -25,6 +25,7 @@ import java.util.concurrent.Callable;
 
 import javax.annotation.Nullable;
 
+import brooklyn.location.basic.Locations;
 import org.apache.http.HttpStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -217,8 +218,7 @@ public class BrooklynNodeImpl extends SoftwareProcessImpl implements BrooklynNod
     @Override
     protected void postStop() {
         super.postStop();
-        ConfigBag stopParameters = BrooklynTaskTags.getCurrentEffectorParameters();
-        if (isStopMachine(stopParameters)) {
+        if (isStopMachine()) {
             // Don't unmanage in entity's task context as it will self-cancel the task. Wait
for the stop effector to complete.
             // If this is not enough (still getting Caused by: java.util.concurrent.CancellationException:
null) then
             // we could search for the top most task with entity context == this and wait
on it. Even stronger would be
@@ -228,9 +228,13 @@ public class BrooklynNodeImpl extends SoftwareProcessImpl implements
BrooklynNod
         }
     }
 
-    private boolean isStopMachine(ConfigBag stopParameters) {
-        return stopParameters == null ||
-                stopParameters.get(StopSoftwareParameters.STOP_MACHINE_MODE) != StopMode.NEVER;
+    private boolean isStopMachine() {
+        // Don't rely on effector parameters, check if there is still a machine running.
+        // If the entity was previously stopped with STOP_MACHINE_MODE=StopMode.NEVER
+        // and a second time with STOP_MACHINE_MODE=StopMode.IF_NOT_STOPPED, then the
+        // machine is still running, but there is no deterministic way to infer this from
+        // the parameters alone.
+        return Locations.findUniqueSshMachineLocation(this.getLocations()).isAbsent();
     }
 
     private void queueShutdownTask() {


Mime
View raw message