removing the primary member handling from autoscaler
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/cf2e00aa Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/cf2e00aa Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/cf2e00aa Branch: refs/heads/master Commit: cf2e00aa21742b5b1e1484f10d86158603ab3832 Parents: f1e5488 Author: reka <[email protected]> Authored: Mon Jul 27 15:27:54 2015 +0530 Committer: reka <[email protected]> Committed: Wed Jul 29 16:11:07 2015 +0530 ---------------------------------------------------------------------- .../client/AutoscalerCloudControllerClient.java | 7 +- .../autoscaler/context/InstanceContext.java | 4 - .../context/cluster/ClusterInstanceContext.java | 12 +-- .../autoscaler/monitor/MonitorFactory.java | 9 -- .../monitor/cluster/ClusterMonitor.java | 93 -------------------- .../autoscaler/rule/RuleTasksDelegator.java | 4 +- 6 files changed, 8 insertions(+), 121 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/cf2e00aa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java index f944a9f..9504d53 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java @@ -83,7 +83,7 @@ public class AutoscalerCloudControllerClient { public synchronized MemberContext startInstance(PartitionRef partition, String clusterId, String clusterInstanceId, - String networkPartitionId, boolean isPrimary, + String networkPartitionId, int minMemberCount) throws SpawningException { try { if (log.isInfoEnabled()) { @@ -107,15 +107,10 @@ public class AutoscalerCloudControllerClient { instanceContext.setNetworkPartitionId(networkPartitionId); Properties memberContextProps = new Properties(); - Property isPrimaryProp = new Property(); - isPrimaryProp.setName("PRIMARY"); - isPrimaryProp.setValue(String.valueOf(isPrimary)); - Property minCountProp = new Property(); minCountProp.setName(StratosConstants.MIN_COUNT); minCountProp.setValue(String.valueOf(minMemberCount)); - memberContextProps.addProperty(isPrimaryProp); memberContextProps.addProperty(minCountProp); instanceContext.setProperties(AutoscalerUtil.toStubProperties(memberContextProps)); http://git-wip-us.apache.org/repos/asf/stratos/blob/cf2e00aa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/InstanceContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/InstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/InstanceContext.java index 977ad7d..52f14ef 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/InstanceContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/InstanceContext.java @@ -53,10 +53,6 @@ public abstract class InstanceContext { return id; } - public void setId(String id) { - this.id = id; - } - public String getParentInstanceId() { return parentInstanceId; } http://git-wip-us.apache.org/repos/asf/stratos/blob/cf2e00aa/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 d1964b3..b4c6cec 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 @@ -47,15 +47,15 @@ public class ClusterInstanceContext extends InstanceContext { // Map<PartitionId, Partition Context> protected Map<String, ClusterLevelPartitionContext> partitionCtxts; //boolean values to keep whether the requests in flight parameters are reset or not - private boolean rifReset = false, averageRifReset = false, gradientRifReset = false, secondDerivativeRifRest = false; + private boolean rifReset, averageRifReset, gradientRifReset, secondDerivativeRifRest; //boolean values to keep whether the memory consumption parameters are reset or not - private boolean memoryConsumptionReset = false, averageMemoryConsumptionReset = false, - gradientMemoryConsumptionReset = false, secondDerivativeMemoryConsumptionRest = false; + private boolean memoryConsumptionReset, averageMemoryConsumptionReset, + gradientMemoryConsumptionReset, secondDerivativeMemoryConsumptionRest; //boolean values to keep whether the load average parameters are reset or not - private boolean loadAverageReset = false, averageLoadAverageReset = false, gradientLoadAverageReset = false, - secondDerivativeLoadAverageRest = false; + private boolean loadAverageReset, averageLoadAverageReset, gradientLoadAverageReset, + secondDerivativeLoadAverageRest; //boolean values to keep whether average requests served per instance parameters are reset or not - private boolean averageRequestServedPerInstanceReset = false; + private boolean averageRequestServedPerInstanceReset; //Following information will keep events details private RequestsInFlight requestsInFlight; private MemoryConsumption memoryConsumption; http://git-wip-us.apache.org/repos/asf/stratos/blob/cf2e00aa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java index a85cf03..0b265e6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java @@ -57,7 +57,6 @@ import java.util.*; */ public class MonitorFactory { private static final Log log = LogFactory.getLog(MonitorFactory.class); - public static final String IS_PRIMARY = "PRIMARY"; /** * Factor method used to create relevant monitors based on the given context @@ -302,14 +301,6 @@ public class MonitorFactory { groupScalingEnabledSubtree, deploymentPolicyId); - Properties props = cluster.getProperties(); - if (props != null) { - // Set hasPrimary property - // hasPrimary is true if there are primary members available in that cluster - clusterMonitor.setHasPrimary(Boolean.parseBoolean( - cluster.getProperties().getProperty(IS_PRIMARY))); - } - // Setting the parent of the cluster monitor clusterMonitor.setParent(parentMonitor); clusterMonitor.setId(clusterId); http://git-wip-us.apache.org/repos/asf/stratos/blob/cf2e00aa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java index b9b6050..b1cf3ea 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java @@ -101,7 +101,6 @@ public class ClusterMonitor extends Monitor { private boolean groupScalingEnabledSubtree; private static final Log log = LogFactory.getLog(ClusterMonitor.class); - private boolean hasPrimary; private String deploymentPolicyId; @@ -309,25 +308,6 @@ public class ClusterMonitor extends Monitor { } } - private boolean isPrimaryMember(MemberContext memberContext) { - Properties props = AutoscalerObjectConverter.convertCCPropertiesToProperties(memberContext.getProperties()); - if (log.isDebugEnabled()) { - log.debug(" Properties [" + props + "] "); - } - if (props != null && props.getProperties() != null) { - for (Property prop : props.getProperties()) { - if (prop.getName().equals("PRIMARY")) { - if (Boolean.parseBoolean(prop.getValue())) { - log.debug("Adding member id [" + memberContext.getMemberId() + "] " + - "member instance id [" + memberContext.getInstanceId() + "] as a primary member"); - return true; - } - } - } - } - return false; - } - public synchronized void monitor() { try { @@ -353,31 +333,8 @@ public class ClusterMonitor extends Monitor { log.debug(String.format("Cluster monitor is running: [application-id] %s [cluster-id]: " + "%s", getAppId(), getClusterId())); } - // store primary members in the cluster instance context - List<String> primaryMemberListInClusterInstance = new ArrayList<String>(); - for (ClusterLevelPartitionContext partitionContext : - instanceContext.getPartitionCtxts()) { - - // get active primary members in this cluster instance context - for (MemberContext memberContext : partitionContext.getActiveMembers()) { - if (isPrimaryMember(memberContext)) { - primaryMemberListInClusterInstance.add(memberContext.getMemberId()); - } - } - - // get pending primary members in this cluster instance context - for (MemberContext memberContext : partitionContext.getPendingMembers()) { - if (isPrimaryMember(memberContext)) { - primaryMemberListInClusterInstance.add(memberContext.getMemberId()); - } - } - } - - instanceContext.getMinCheckKnowledgeSession().setGlobal("primaryMemberCount", - primaryMemberListInClusterInstance.size()); instanceContext.getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); - instanceContext.getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary); //FIXME when parent chosen the partition String paritionAlgo = instanceContext.getPartitionAlgorithm(); @@ -392,14 +349,7 @@ public class ClusterMonitor extends Monitor { instanceContext.setMinCheckFactHandle(evaluate(instanceContext. getMinCheckKnowledgeSession(), instanceContext.getMinCheckFactHandle(), instanceContext)); - - - instanceContext.getMaxCheckKnowledgeSession().setGlobal("primaryMemberCount", - primaryMemberListInClusterInstance.size()); instanceContext.getMaxCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); - instanceContext.getMaxCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary); - instanceContext.getMaxCheckKnowledgeSession().setGlobal("primaryMembers", - primaryMemberListInClusterInstance); if (log.isDebugEnabled()) { log.debug(String.format("Running max check for cluster instance %s ", instanceContext.getId() + " for the cluster: " + clusterId)); @@ -433,20 +383,11 @@ public class ClusterMonitor extends Monitor { instanceContext.getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset); instanceContext.getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset); instanceContext.getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset); - instanceContext.getScaleCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary); instanceContext.getScaleCheckKnowledgeSession().setGlobal("algorithmName", paritionAlgo); instanceContext.getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", clusterContext.getAutoscalePolicy()); instanceContext.getScaleCheckKnowledgeSession().setGlobal("arspiReset", averageRequestServedPerInstanceReset); - instanceContext.getScaleCheckKnowledgeSession().setGlobal("primaryMembers", - primaryMemberListInClusterInstance); - - if (log.isDebugEnabled()) { - log.debug(String.format("Running scale check for [cluster instance context] %s ", - instanceContext.getId())); - log.debug(" Primary members : " + primaryMemberListInClusterInstance); - } instanceContext.setScaleCheckFactHandle(evaluate( instanceContext.getScaleCheckKnowledgeSession() @@ -549,16 +490,6 @@ public class ClusterMonitor extends Monitor { } @Override - public String toString() { - return "ClusterMonitor [clusterId=" + getClusterId() + - ", hasPrimary=" + hasPrimary + " ]"; - } - - public void setHasPrimary(boolean hasPrimary) { - this.hasPrimary = hasPrimary; - } - - @Override public void onChildStatusEvent(MonitorStatusEvent statusEvent) { } @@ -612,28 +543,6 @@ public class ClusterMonitor extends Monitor { ClusterInstanceContext clusterInstanceContext = getClusterInstanceContext(scalingEvent.getNetworkPartitionId(), instanceId); - - // store primary members in the cluster instance context - List<String> primaryMemberListInClusterInstance = new ArrayList<String>(); - - for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts()) { - - // get active primary members in this cluster instance context - for (MemberContext memberContext : partitionContext.getActiveMembers()) { - if (isPrimaryMember(memberContext)) { - primaryMemberListInClusterInstance.add(memberContext.getMemberId()); - } - } - - // get pending primary members in this cluster instance context - for (MemberContext memberContext : partitionContext.getPendingMembers()) { - if (isPrimaryMember(memberContext)) { - primaryMemberListInClusterInstance.add(memberContext.getMemberId()); - } - } - } - - //TODO get min instance count from instance context float requiredInstanceCount = clusterInstanceContext.getMinInstanceCount() * scalingFactorBasedOnDependencies; int roundedRequiredInstanceCount = getRoundedInstanceCount(requiredInstanceCount, @@ -643,8 +552,6 @@ public class ClusterMonitor extends Monitor { clusterInstanceContext.getDependentScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); clusterInstanceContext.getDependentScaleCheckKnowledgeSession().setGlobal("roundedRequiredInstanceCount", roundedRequiredInstanceCount); clusterInstanceContext.getDependentScaleCheckKnowledgeSession().setGlobal("algorithmName", clusterInstanceContext.getPartitionAlgorithm()); - clusterInstanceContext.getDependentScaleCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary); - clusterInstanceContext.getDependentScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInClusterInstance); clusterInstanceContext.setDependentScaleCheckFactHandle(evaluate( clusterInstanceContext.getDependentScaleCheckKnowledgeSession() , clusterInstanceContext.getDependentScaleCheckFactHandle(), clusterInstanceContext)); http://git-wip-us.apache.org/repos/asf/stratos/blob/cf2e00aa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java index 87d71a7..43274bf 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java @@ -173,10 +173,9 @@ public class RuleTasksDelegator { * @param clusterMonitorPartitionContext Cluster monitor partition context * @param clusterId Cluster id * @param clusterInstanceId Instance id - * @param isPrimary Is a primary member */ public void delegateSpawn(ClusterLevelPartitionContext clusterMonitorPartitionContext, String clusterId, - String clusterInstanceId, boolean isPrimary) { + String clusterInstanceId) { try { String nwPartitionId = clusterMonitorPartitionContext.getNetworkPartitionId(); @@ -197,7 +196,6 @@ public class RuleTasksDelegator { .startInstance(clusterMonitorPartitionContext.getPartition(), clusterId, clusterInstanceId, clusterMonitorPartitionContext.getNetworkPartitionId(), - isPrimary, minimumCountOfNetworkPartition); if (memberContext != null) { ClusterLevelPartitionContext partitionContext = clusterInstanceContext.
