Avoid err if unmanage entity twice - BrooklynNode unmanages itself on stop, and the BrooklynCluster (extends DynamicCluster) also unmanaged its members when shrinking. - This was causing an error in EntityManagementSupport.onManagementStopped when checking if the value of mangaementContext was as expected.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/8b3ecd7a Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/8b3ecd7a Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/8b3ecd7a Branch: refs/heads/master Commit: 8b3ecd7a643d8621d1ee79022593c804374174d5 Parents: ae59970 Author: Aled Sage <[email protected]> Authored: Tue Mar 10 13:41:11 2015 +0000 Committer: Aled Sage <[email protected]> Committed: Thu Mar 26 10:09:40 2015 +0000 ---------------------------------------------------------------------- .../management/internal/EntityManagementSupport.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8b3ecd7a/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java b/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java index cdf21dc..7b59c83 100644 --- a/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java +++ b/core/src/main/java/brooklyn/management/internal/EntityManagementSupport.java @@ -153,7 +153,7 @@ public class EntityManagementSupport { } public void onRebind(ManagementTransitionInfo info) { - nonDeploymentManagementContext.setMode(NonDeploymentManagementContext.NonDeploymentManagementContextMode.MANAGEMENT_REBINDING); + nonDeploymentManagementContext.setMode(NonDeploymentManagementContextMode.MANAGEMENT_REBINDING); } public void onManagementStarting(ManagementTransitionInfo info) { @@ -177,7 +177,7 @@ public class EntityManagementSupport { } this.managementContext = info.getManagementContext(); - nonDeploymentManagementContext.setMode(NonDeploymentManagementContext.NonDeploymentManagementContextMode.MANAGEMENT_STARTING); + nonDeploymentManagementContext.setMode(NonDeploymentManagementContextMode.MANAGEMENT_STARTING); if (!isReadOnly()) { nonDeploymentManagementContext.getSubscriptionManager().setDelegate((AbstractSubscriptionManager) managementContext.getSubscriptionManager()); @@ -230,7 +230,7 @@ public class EntityManagementSupport { return; } - nonDeploymentManagementContext.setMode(NonDeploymentManagementContext.NonDeploymentManagementContextMode.MANAGEMENT_STARTED); + nonDeploymentManagementContext.setMode(NonDeploymentManagementContextMode.MANAGEMENT_STARTED); /* * - set derived/inherited config values @@ -291,7 +291,7 @@ public class EntityManagementSupport { nonDeploymentManagementContext = new NonDeploymentManagementContext(entity, NonDeploymentManagementContextMode.MANAGEMENT_STOPPING); } else { // already stopped? or not started? - nonDeploymentManagementContext.setMode(NonDeploymentManagementContext.NonDeploymentManagementContextMode.MANAGEMENT_STOPPING); + nonDeploymentManagementContext.setMode(NonDeploymentManagementContextMode.MANAGEMENT_STOPPING); } } // TODO custom stopping activities @@ -315,6 +315,9 @@ public class EntityManagementSupport { public void onManagementStopped(ManagementTransitionInfo info) { synchronized (this) { + if (managementContext == null && nonDeploymentManagementContext.getMode() == NonDeploymentManagementContextMode.MANAGEMENT_STOPPED) { + return; + } if (managementContext != info.getManagementContext()) { throw new IllegalStateException("Has different management context: "+managementContext+"; expected "+info.getManagementContext()); } @@ -331,7 +334,7 @@ public class EntityManagementSupport { synchronized (this) { managementContext = null; - nonDeploymentManagementContext.setMode(NonDeploymentManagementContext.NonDeploymentManagementContextMode.MANAGEMENT_STOPPED); + nonDeploymentManagementContext.setMode(NonDeploymentManagementContextMode.MANAGEMENT_STOPPED); } }
