Updated Branches: refs/heads/master 707788c89 -> 97569d5b4
Get rid of storing health stats at partition manager Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/97569d5b Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/97569d5b Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/97569d5b Branch: refs/heads/master Commit: 97569d5b4d843bcc53bf2767eaf1dde343a0adfb Parents: 707788c Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Dec 13 12:53:54 2013 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Dec 13 12:53:54 2013 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/ClusterMonitor.java | 1 + .../autoscaler/NetworkPartitionContext.java | 3 ++ .../health/HealthEventMessageDelegator.java | 38 ++++++++++++++++++-- 3 files changed, 39 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/97569d5b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java index 7ab70b7..1ae757f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java @@ -173,6 +173,7 @@ public class ClusterMonitor implements Runnable{ scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(scaleCheckKnowledgeSession , scaleCheckFactHandle, networkPartitionContext); + networkPartitionContext.setRifReset(false); } else if(log.isDebugEnabled()){ log.debug(String.format("Scale will not run since the LB statistics have not received before this " + "cycle for network partition %s", networkPartitionContext.getId()) ); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/97569d5b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java index 63a8343..1f7f029 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java @@ -265,6 +265,9 @@ public class NetworkPartitionContext { public void setRifReset(boolean rifReset) { this.rifReset = rifReset; + this.averageRifReset = rifReset; + this.gradientRifReset = rifReset; + this.secondDerivativeRifRest = rifReset; } public String getId() { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/97569d5b/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 e5ac2b9..fc4d30d 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 @@ -201,7 +201,7 @@ public class HealthEventMessageDelegator implements Runnable { String memberId = event.getProperties().get("member_id"); Member member = findMember(memberId); if(member != null) { - String networkPartitionId = PartitionManager.getInstance().getNetworkPartitionOfPartition(member.getPartitionId()).getId(); + String networkPartitionId = findNetworkPartitionId(memberId); LoadAverage loadAverage = AutoscalerContext.getInstance().getMonitor(member.getClusterId()) .getNetworkPartitionCtxt(networkPartitionId) .getPartitionCtxt(member.getPartitionId()) @@ -228,7 +228,7 @@ public class HealthEventMessageDelegator implements Runnable { String memberId = event.getProperties().get("member_id"); Member member = findMember(memberId); if(member != null) { - String networkPartitionId = PartitionManager.getInstance().getNetworkPartitionOfPartition(member.getPartitionId()).getId(); + String networkPartitionId = findNetworkPartitionId(memberId); MemoryConsumption memoryConsumption = AutoscalerContext.getInstance().getMonitor(member.getClusterId()) .getNetworkPartitionCtxt(networkPartitionId) .getPartitionCtxt(member.getPartitionId()) @@ -250,6 +250,38 @@ public class HealthEventMessageDelegator implements Runnable { return null; } } + private String findClusterId(String memberId) { + for(Service service: TopologyManager.getTopology().getServices()){ + for(Cluster cluster: service.getClusters()){ + if(cluster.memberExists(memberId)){ + return cluster.getClusterId(); + } + } + } + return null; + } + + private NetworkPartitionContext findNetworkPartition(String memberId) { + for(Service service: TopologyManager.getTopology().getServices()){ + for(Cluster cluster: service.getClusters()){ + return AutoscalerContext.getInstance().getMonitor(cluster.getClusterId()) + .getNetworkPartitionCtxt(cluster.getMember(memberId).getNetworkPartitionId()); + } + } + return null; + } + + + private String findNetworkPartitionId(String memberId) { + for(Service service: TopologyManager.getTopology().getServices()){ + for(Cluster cluster: service.getClusters()){ + if(cluster.memberExists(memberId)){ + return cluster.getMember(memberId).getNetworkPartitionId(); + } + } + } + return null; + } private Member findMember(String memberId) { try { @@ -284,7 +316,7 @@ public class HealthEventMessageDelegator implements Runnable { // start a new member in the same Partition String partitionId = monitor.getPartitonOfMember(memberId); Partition partition = monitor.getDeploymentPolicy().getPartitionById(partitionId); - NetworkPartitionContext nwPartitionCtxt = PartitionManager.getInstance().getNetworkPartitionOfPartition(partitionId); + NetworkPartitionContext nwPartitionCtxt = findNetworkPartition(memberId); PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId); String lbClusterId = AutoscalerRuleEvaluator.getLbClusterId(partitionCtxt, nwPartitionCtxt);
