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");
