fixing an NPE while reading id in Cluster monitor and using ApplicationBuilder 
to update the status of the monitors


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/728ffe95
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/728ffe95
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/728ffe95

Branch: refs/heads/master
Commit: 728ffe9586cfdea970dcb43ab9c8dd3c20a43f21
Parents: b9a2894
Author: reka <[email protected]>
Authored: Sat Nov 8 23:35:40 2014 +0530
Committer: reka <[email protected]>
Committed: Sun Nov 9 12:02:21 2014 +0530

----------------------------------------------------------------------
 .../monitor/ParentComponentMonitor.java         | 25 ++++++++++----------
 .../application/ApplicationMonitorFactory.java  |  1 +
 .../monitor/cluster/VMClusterMonitor.java       |  2 ++
 .../autoscaler/monitor/group/GroupMonitor.java  |  7 +++---
 4 files changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/728ffe95/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
index e7cfdb2..7d0ac8f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
@@ -20,19 +20,19 @@ package org.apache.stratos.autoscaler.monitor;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
-import org.apache.stratos.autoscaler.exception.PartitionValidationException;
-import org.apache.stratos.autoscaler.exception.PolicyValidationException;
-import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.applications.dependency.DependencyBuilder;
 import org.apache.stratos.autoscaler.applications.dependency.DependencyTree;
 import 
org.apache.stratos.autoscaler.applications.dependency.context.ApplicationContext;
-import 
org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher;
+import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
-import org.apache.stratos.autoscaler.status.checker.StatusChecker;
-import org.apache.stratos.messaging.domain.applications.ParentComponent;
+import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
+import org.apache.stratos.autoscaler.exception.PartitionValidationException;
+import org.apache.stratos.autoscaler.exception.PolicyValidationException;
+import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
 import 
org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
+import org.apache.stratos.autoscaler.status.checker.StatusChecker;
+import org.apache.stratos.messaging.domain.applications.ParentComponent;
 
 import java.util.HashMap;
 import java.util.List;
@@ -55,7 +55,7 @@ public abstract class ParentComponentMonitor extends Monitor {
         //Building the dependency for this monitor within the immediate 
children
         dependencyTree = 
DependencyBuilder.getInstance().buildDependency(component);
     }
-    
+
     /**
      * This will start the child monitors based on the active of siblings 
according to start up order
      *
@@ -107,7 +107,7 @@ public abstract class ParentComponentMonitor extends 
Monitor {
     }*/
 
     // move to inactive monitors list to use in the Terminated event
-    protected synchronized void markMonitorAsInactive (String monitorKey) {
+    protected synchronized void markMonitorAsInactive(String monitorKey) {
 
         if (!this.aliasToInActiveMonitorsMap.containsKey(monitorKey)) {
             this.aliasToInActiveMonitorsMap.put(monitorKey,
@@ -116,7 +116,6 @@ public abstract class ParentComponentMonitor extends 
Monitor {
     }
 
     /**
-     *
      * @param idOfEvent
      */
     protected void onChildInActiveEvent(String idOfEvent) {
@@ -132,12 +131,12 @@ public abstract class ParentComponentMonitor extends 
Monitor {
             if (terminationList.size() ==
                     (this.aliasToActiveMonitorsMap.size() + 
this.aliasToInActiveMonitorsMap.size())) {
                 if (this.parent != null) {
-                    
ApplicationsEventPublisher.sendGroupTerminatingEvent(this.appId, this.id);
+                    ApplicationBuilder.handleGroupTerminatingEvent(this.appId, 
this.id);
                 }
             } else {
                 //TODO application InActive
                 if (this.parent != null) {
-                    
ApplicationsEventPublisher.sendGroupInActivateEvent(this.appId, this.id);
+                    ApplicationBuilder.handleGroupInActivateEvent(this.appId, 
this.id);
                 }
                 //Since it is reached the most independent unit and has few 
independent monitors,
                 // has to put the children down to terminating
@@ -152,7 +151,7 @@ public abstract class ParentComponentMonitor extends 
Monitor {
                         if (monitor != null) {
                             if (monitor.hasActiveMonitors()) {
                                 //it is a group
-                                
ApplicationsEventPublisher.sendGroupTerminatingEvent(this.appId,
+                                
ApplicationBuilder.handleGroupTerminatingEvent(this.appId,
                                         terminationContext.getId());
                             } else {
                                 
ClusterStatusEventPublisher.sendClusterTerminatingEvent(this.appId,

http://git-wip-us.apache.org/repos/asf/stratos/blob/728ffe95/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
index 30e6415..a90660f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
@@ -194,6 +194,7 @@ public class ApplicationMonitorFactory {
             AbstractClusterMonitor clusterMonitor = 
ClusterMonitorFactory.getMonitor(cluster);
             //Setting the parent of the cluster monitor
             clusterMonitor.setParent(parentMonitor);
+            clusterMonitor.setId(clusterId);
             //setting the dependent behaviour of the cluster monitor
             if(parentMonitor.isDependent() || (context.isDependent() && 
context.hasChild())) {
                 clusterMonitor.setHasDependent(true);

http://git-wip-us.apache.org/repos/asf/stratos/blob/728ffe95/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index dd2895a..97f3da6 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -453,6 +453,8 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.info(String.format("Faulty member is terminated and removed 
from the active members list: "
                                    + "[member] %s [partition] %s [cluster] %s 
", memberId, partitionId, clusterId));
         }
+
+        
StatusChecker.getInstance().onMemberFaultEvent(memberFaultEvent.getClusterId(), 
partitionId);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/stratos/blob/728ffe95/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
index 1648402..e3324a8 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
@@ -23,7 +23,6 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
-import 
org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher;
 import org.apache.stratos.autoscaler.monitor.EventHandler;
 import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor;
@@ -33,9 +32,9 @@ import 
org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
 import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
-import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.applications.Group;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
+import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
 
 /**
@@ -74,7 +73,7 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
             onChildInActiveEvent(id);
 
         } else if (status1 == ClusterStatus.Created || status1 == 
GroupStatus.Created) {
-            if(this.aliasToInActiveMonitorsMap.containsKey(id)) {
+            if (this.aliasToInActiveMonitorsMap.containsKey(id)) {
                 this.aliasToInActiveMonitorsMap.remove(id);
             }
             if (this.status == GroupStatus.Terminating) {
@@ -88,7 +87,7 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
 
         } else if (status1 == ClusterStatus.Terminated || status1 == 
GroupStatus.Terminated) {
             //Check whether all dependent goes Terminated and then start them 
in parallel.
-            if(this.aliasToInActiveMonitorsMap.containsKey(id)) {
+            if (this.aliasToInActiveMonitorsMap.containsKey(id)) {
                 this.aliasToInActiveMonitorsMap.remove(id);
             } else {
                 log.warn("[monitor] " + id + " cannot be found in the inActive 
monitors list");

Reply via email to