improving status calculation of cluster
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ef6f5286 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ef6f5286 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ef6f5286 Branch: refs/heads/master Commit: ef6f5286a9c23662f1fb21f40c43657a0c858350 Parents: bf4d3c2 Author: reka <[email protected]> Authored: Thu Dec 4 20:02:59 2014 +0530 Committer: reka <[email protected]> Committed: Thu Dec 4 20:03:10 2014 +0530 ---------------------------------------------------------------------- .../context/cluster/ClusterInstanceContext.java | 8 ++++++++ .../autoscaler/context/cluster/VMClusterContext.java | 8 ++++---- .../processor/cluster/ClusterStatusActiveProcessor.java | 10 ++++------ .../cluster/ClusterStatusInActiveProcessor.java | 12 +++++++----- 4 files changed, 23 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ef6f5286/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java index 509ccfe..ab4bec3 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java @@ -438,4 +438,12 @@ public class ClusterInstanceContext extends InstanceContext { return networkPartitionId; } + public int getActiveMembers() { + int activeMembers = 0; + for(ClusterLevelPartitionContext partitionContext : this.partitionCtxts) { + activeMembers += partitionContext.getActiveInstanceCount(); + } + return activeMembers; + } + } http://git-wip-us.apache.org/repos/asf/stratos/blob/ef6f5286/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java index 2cdef55..42639bd 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java @@ -240,16 +240,16 @@ public class VMClusterContext extends AbstractClusterContext { ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext. getClusterInstanceContext(clusterInstance.getInstanceId()); - int maxInstances = 2; + int maxInstances = 1; if (clusterInstanceContext == null) { - int minInstances = 2; + int minInstances = 1; ApplicationHolder.acquireReadLock(); try { Application application = ApplicationHolder.getApplications(). getApplication(cluster.getAppId()); ClusterDataHolder dataHolder = application.getClusterData(AutoscalerUtil.getAliasFromClusterId(clusterId)); - //TODO minInstances = dataHolder.getMinInstances(); - //maxInstances = dataHolder.getMaxInstances(); + minInstances = dataHolder.getMinInstances(); + maxInstances = dataHolder.getMaxInstances(); } finally { ApplicationHolder.releaseReadLock(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/ef6f5286/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java index 1967a4b..8e9d99c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java @@ -70,16 +70,14 @@ public class ClusterStatusActiveProcessor extends ClusterStatusProcessor { for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getNetworkPartitionCtxts()) { //minimum check per partition ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId); - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : instanceContext.getPartitionCtxts()) { - if (clusterMonitorPartitionContext.getMinimumMemberCount() == clusterMonitorPartitionContext.getActiveMemberCount()) { - clusterActive = true; - } else if (clusterMonitorPartitionContext.getActiveMemberCount() > clusterMonitorPartitionContext.getMinimumMemberCount()) { - log.info("cluster already activated..."); + if(instanceContext != null) { + if(instanceContext.getActiveMembers() >= instanceContext.getMaxInstanceCount()) { clusterActive = true; } else { - return false; + clusterActive = false; } } + } if(clusterActive) { if (log.isInfoEnabled()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/ef6f5286/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java index c0773a4..490f914 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java @@ -92,15 +92,17 @@ public class ClusterStatusInActiveProcessor extends ClusterStatusProcessor { private boolean getClusterInactive(String instanceId, VMClusterMonitor monitor) { boolean clusterInActive = false; - for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { - ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId); - for (ClusterLevelPartitionContext partition : instanceContext.getPartitionCtxts()) { - if (partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : + monitor.getAllNetworkPartitionCtxts().values()) { + ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext. + getClusterInstanceContext(instanceId); + if(instanceContext != null) { + if(instanceContext.getActiveMembers() < instanceContext.getMaxInstanceCount()) { clusterInActive = true; - return clusterInActive; } } + } return clusterInActive; }
