Updated Branches: refs/heads/master 375bd1699 -> 58b06ce91
Fixing possible NPEs when health stat come before member activated Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/58b06ce9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/58b06ce9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/58b06ce9 Branch: refs/heads/master Commit: 58b06ce9193aa1bb2551db9097b6063cf1ac98a1 Parents: 375bd16 Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Dec 20 08:49:24 2013 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Dec 20 08:49:24 2013 +0530 ---------------------------------------------------------------------- .../health/HealthEventMessageDelegator.java | 31 ++++++++++++++++---- .../autoscaler/monitor/AbstractMonitor.java | 12 -------- 2 files changed, 26 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/58b06ce9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java index d8171e7..cab71e6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java @@ -22,10 +22,7 @@ import com.google.gson.stream.JsonReader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.AutoscalerContext; -import org.apache.stratos.autoscaler.Constants; -import org.apache.stratos.autoscaler.NetworkPartitionContext; -import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.*; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.exception.SpawningException; import org.apache.stratos.autoscaler.exception.TerminationException; @@ -213,6 +210,14 @@ public class HealthEventMessageDelegator implements Runnable { private LoadAverage findLoadAverage(Event event) { String memberId = event.getProperties().get("member_id"); Member member = findMember(memberId); + + if(member.isActive()){ + if(log.isDebugEnabled()){ + log.debug(String.format("Member activated event has not received for the member %s. Therefore ignoring" + + " the load average health stat", memberId)); + } + return null; + } if(member != null) { String networkPartitionId = findNetworkPartitionId(memberId); LoadAverage loadAverage = AutoscalerContext.getInstance().getMonitor(member.getClusterId()) @@ -240,6 +245,15 @@ public class HealthEventMessageDelegator implements Runnable { private MemoryConsumption findMemoryConsumption(Event event) { String memberId = event.getProperties().get("member_id"); Member member = findMember(memberId); + + if(member.isActive()){ + if(log.isDebugEnabled()){ + log.debug(String.format("Member activated event has not received for the member %s. Therefore ignoring" + + " the health stat", memberId)); + } + return null; + } + if(member != null) { String networkPartitionId = findNetworkPartitionId(memberId); MemoryConsumption memoryConsumption = AutoscalerContext.getInstance().getMonitor(member.getClusterId()) @@ -333,7 +347,14 @@ public class HealthEventMessageDelegator implements Runnable { NetworkPartitionContext nwPartitionCtxt; try{ TopologyManager.acquireReadLock(); - Member member = monitor.getMember(memberId); + Member member = findMember(memberId); + if(!member.isActive()){ + if(log.isDebugEnabled()){ + log.debug(String.format("Member activated event has not received for the member %s. Therefore ignoring" + + " the member fault health stat", memberId)); + } + return; + } if (null == member) { // member has already terminated. So no action required return; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/58b06ce9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java index aa2bb8c..30ed61a 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractMonitor.java @@ -88,18 +88,6 @@ import org.drools.runtime.rule.FactHandle; } return null; } - - public Member getMember(String memberId){ - - for(Service service: TopologyManager.getTopology().getServices()){ - for(Cluster cluster: service.getClusters()){ - if(cluster.memberExists(memberId)){ - return cluster.getMember(memberId); - } - } - } - return null; - } public void destroy() { minCheckKnowledgeSession.dispose();
