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

Reply via email to