fixing possible NPEs when application monitor is not there
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/912a24a6 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/912a24a6 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/912a24a6 Branch: refs/heads/stratos-4.1.x Commit: 912a24a6d4f12462260666382e812c1b24c34c6f Parents: eacf517 Author: reka <[email protected]> Authored: Wed Oct 7 18:20:00 2015 +0530 Committer: reka <[email protected]> Committed: Tue Oct 13 13:24:20 2015 +0530 ---------------------------------------------------------------------- .../applications/topic/ApplicationBuilder.java | 11 +++++++---- .../topology/AutoscalerTopologyEventReceiver.java | 2 +- .../autoscaler/monitor/component/GroupMonitor.java | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/912a24a6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java index 2f1b5f0..1c99a1c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java @@ -419,7 +419,8 @@ public class ApplicationBuilder { getAppMonitor(appId); if (monitor != null) { - if (monitor.hasMonitors() && applicationMonitor.isTerminating()) { + if (monitor.hasMonitors() && applicationMonitor != null && + !applicationMonitor.isForce() && applicationMonitor.isTerminating()) { for (Monitor monitor1 : monitor. getAliasToActiveChildMonitorsMap().values()) { //destroying the drools @@ -427,8 +428,7 @@ public class ApplicationBuilder { } } org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext networkPartitionContext = - (org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext) monitor. - getNetworkPartitionContext(groupInstance.getNetworkPartitionId()); + monitor.getNetworkPartitionContext(groupInstance.getNetworkPartitionId()); networkPartitionContext.removeInstanceContext(instanceId); if (groupInstance.getPartitionId() != null) { networkPartitionContext.getPartitionCtxt(groupInstance.getPartitionId()). @@ -438,7 +438,10 @@ public class ApplicationBuilder { group.removeInstance(instanceId); ApplicationHolder.persistApplication(application); ApplicationsEventPublisher.sendGroupInstanceTerminatedEvent(appId, groupId, instanceId); - monitor.setStatus(status, instanceId, parentId); + if(applicationMonitor != null && !applicationMonitor.isForce()) { + //If force un-deployment, then no need to notify the parent + monitor.setStatus(status, instanceId, parentId); + } } } else { log.warn("Group state transition is not valid: [group-id] " + groupId + http://git-wip-us.apache.org/repos/asf/stratos/blob/912a24a6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java index 2573991..ef31b97 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java @@ -312,7 +312,7 @@ public class AutoscalerTopologyEventReceiver { // if the cluster monitor is null, assume that its termianted appMonitor = AutoscalerContext.getInstance(). getAppMonitor(clusterTerminatedEvent.getAppId()); - if (appMonitor != null) { + if (appMonitor != null && !appMonitor.isForce()) { appMonitor.onChildStatusEvent( new ClusterStatusEvent(ClusterStatus.Terminated, clusterId, instanceId)); http://git-wip-us.apache.org/repos/asf/stratos/blob/912a24a6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java index 3136ed0..341f264 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java @@ -160,7 +160,7 @@ public class GroupMonitor extends ParentComponentMonitor { //When the application is getting un-deployed, need to avoid // checking the minimum count sanctification - if (!applicationMonitor.isTerminating()) { + if (applicationMonitor!= null && !applicationMonitor.isTerminating()) { Collection<Instance> parentInstances = parent.getInstances(); for (Instance parentInstance : parentInstances) { @@ -510,7 +510,7 @@ public class GroupMonitor extends ParentComponentMonitor { ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance(). getAppMonitor(appId); //If application is forcefully un-deployed, no need to handle here. - if(!applicationMonitor.isForce()) { + if(applicationMonitor != null && !applicationMonitor.isForce()) { GroupInstance instance = (GroupInstance) instanceIdToInstanceMap.get(instanceId); if (instance != null) {
