http://git-wip-us.apache.org/repos/asf/stratos/blob/dd3dce60/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java index af00873..c917f2d 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java @@ -28,7 +28,7 @@ import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; import org.apache.stratos.autoscaler.context.AutoscalerContext; import org.apache.stratos.autoscaler.context.InstanceContext; -import org.apache.stratos.autoscaler.context.application.ApplicationInstanceContext; +import org.apache.stratos.autoscaler.context.application.ParentInstanceContext; import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext; import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException; import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException; @@ -120,29 +120,30 @@ public class ApplicationMonitor extends ParentComponentMonitor { getInstanceIdToInstanceContextMap().values()) { ApplicationInstance instance = (ApplicationInstance) instanceIdToInstanceMap. get(instanceContext.getId()); + ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext; //stopping the monitoring when the group is inactive/Terminating/Terminated if (instance.getStatus().getCode() <= ApplicationStatus.Active.getCode()) { //Gives priority to scaling max out rather than dependency scaling - if (!instanceContext.getIdToScalingOverMaxEvent().isEmpty()) { + if (!parentInstanceContext.getIdToScalingOverMaxEvent().isEmpty()) { //handling the scaling max out of the children - handleScalingMaxOut(instanceContext, networkPartitionContext); + handleScalingMaxOut(parentInstanceContext, networkPartitionContext); - } else if (!instanceContext.getIdToScalingEvent().isEmpty()) { + } else if (!parentInstanceContext.getIdToScalingEvent().isEmpty()) { //handling the dependent scaling for application - handleDependentScaling(instanceContext, networkPartitionContext); + handleDependentScaling(parentInstanceContext, networkPartitionContext); - } else if (!instanceContext.getIdToScalingDownBeyondMinEvent().isEmpty()) { + } else if (!parentInstanceContext.getIdToScalingDownBeyondMinEvent().isEmpty()) { //handling the scale down of the application - handleScalingDownBeyondMin(instanceContext, networkPartitionContext); + handleScalingDownBeyondMin(parentInstanceContext, networkPartitionContext); } } //Resetting the events events - instanceContext.setIdToScalingDownBeyondMinEvent( + parentInstanceContext.setIdToScalingDownBeyondMinEvent( new ConcurrentHashMap<String, ScalingDownBeyondMinEvent>()); - instanceContext.setIdToScalingEvent( + parentInstanceContext.setIdToScalingEvent( new ConcurrentHashMap<String, ScalingEvent>()); - instanceContext.setIdToScalingOverMaxEvent( + parentInstanceContext.setIdToScalingOverMaxEvent( new ConcurrentHashMap<String, ScalingUpBeyondMaxEvent>()); } } @@ -165,7 +166,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { executorService.execute(monitoringRunnable); } - private void handleScalingMaxOut(InstanceContext instanceContext, + private void handleScalingMaxOut(ParentInstanceContext instanceContext, NetworkPartitionContext networkPartitionContext) { if (((NetworkPartitionContext) networkPartitionContext).getPendingInstancesCount() == 0) { //handling the application bursting only when there are no pending instances found @@ -198,7 +199,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { * @param instanceContext instance-context which can be scaled-down * @param nwPartitionContext the network-partition-context of the instance */ - private void handleScalingDownBeyondMin(InstanceContext instanceContext, + private void handleScalingDownBeyondMin(ParentInstanceContext instanceContext, NetworkPartitionContext nwPartitionContext) { //Traverse through all the children to see whether all have sent the scale down boolean allChildrenScaleDown = false; @@ -611,7 +612,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { NetworkPartitionContext context, ApplicationInstance instanceExist) { ApplicationInstance instance; - ApplicationInstanceContext instanceContext; + ParentInstanceContext instanceContext; if (instanceExist != null) { //using the existing instance instance = instanceExist; @@ -623,7 +624,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { String instanceId = instance.getInstanceId(); //Creating appInstanceContext - instanceContext = new ApplicationInstanceContext(instanceId); + instanceContext = new ParentInstanceContext(instanceId); //adding the created App InstanceContext to ApplicationLevelNetworkPartitionContext context.addInstanceContext(instanceContext); context.addPendingInstance(instanceContext);
http://git-wip-us.apache.org/repos/asf/stratos/blob/dd3dce60/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java index ee519a6..b226a78 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java @@ -25,8 +25,8 @@ import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; import org.apache.stratos.autoscaler.context.AutoscalerContext; import org.apache.stratos.autoscaler.context.InstanceContext; -import org.apache.stratos.autoscaler.context.group.GroupInstanceContext; -import org.apache.stratos.autoscaler.context.partition.GroupLevelPartitionContext; +import org.apache.stratos.autoscaler.context.application.ParentInstanceContext; +import org.apache.stratos.autoscaler.context.partition.ParentLevelPartitionContext; import org.apache.stratos.autoscaler.context.partition.PartitionContext; import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext; import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException; @@ -125,31 +125,32 @@ public class GroupMonitor extends ParentComponentMonitor { for (InstanceContext instanceContext : networkPartitionContext. getInstanceIdToInstanceContextMap().values()) { + ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext; GroupInstance instance = (GroupInstance) instanceIdToInstanceMap. get(instanceContext.getId()); //stopping the monitoring when the group is inactive/Terminating/Terminated if (instance.getStatus().getCode() <= GroupStatus.Active.getCode()) { //Gives priority to scaling max out rather than dependency scaling - if (!instanceContext.getIdToScalingOverMaxEvent().isEmpty()) { + if (!parentInstanceContext.getIdToScalingOverMaxEvent().isEmpty()) { //handling the max out of the children - handleScalingUpBeyondMax(instanceContext, networkPartitionContext); + handleScalingUpBeyondMax(parentInstanceContext, networkPartitionContext); - } else if (!instanceContext.getIdToScalingEvent().isEmpty()) { + } else if (!parentInstanceContext.getIdToScalingEvent().isEmpty()) { //handling the dependent scaling - handleDependentScaling(instanceContext, networkPartitionContext); + handleDependentScaling(parentInstanceContext, networkPartitionContext); - } else if (!instanceContext.getIdToScalingDownBeyondMinEvent().isEmpty()) { + } else if (!parentInstanceContext.getIdToScalingDownBeyondMinEvent().isEmpty()) { //scale down only when extra instances found - handleScalingDownBeyondMin(instanceContext, + handleScalingDownBeyondMin(parentInstanceContext, networkPartitionContext, false); } //Resetting the events events - instanceContext.setIdToScalingDownBeyondMinEvent( + parentInstanceContext.setIdToScalingDownBeyondMinEvent( new ConcurrentHashMap<String, ScalingDownBeyondMinEvent>()); - instanceContext.setIdToScalingEvent( + parentInstanceContext.setIdToScalingEvent( new ConcurrentHashMap<String, ScalingEvent>()); - instanceContext.setIdToScalingOverMaxEvent( + parentInstanceContext.setIdToScalingOverMaxEvent( new ConcurrentHashMap<String, ScalingUpBeyondMaxEvent>()); } } @@ -208,7 +209,7 @@ public class GroupMonitor extends ParentComponentMonitor { + appId + " [group] " + id + " as it exceeded the " + "maximum no of instances by " + instancesToBeTerminated); - handleScalingDownBeyondMin(instanceContext, + handleScalingDownBeyondMin((ParentInstanceContext)instanceContext, networkPartitionContext, true); } @@ -227,7 +228,7 @@ public class GroupMonitor extends ParentComponentMonitor { * @param instanceContext the instance which reaches its max * @param networkPartitionContext the network-partition used for the instances */ - private void handleScalingUpBeyondMax(InstanceContext instanceContext, + private void handleScalingUpBeyondMax(ParentInstanceContext instanceContext, NetworkPartitionContext networkPartitionContext) { if (!hasScalingDependents) { //handling the group scaling and if pending instances found, @@ -246,7 +247,7 @@ public class GroupMonitor extends ParentComponentMonitor { * @param nwPartitionContext the network-partition used for the instance * @param forceScaleDown whether it is force scale-down or not */ - private void handleScalingDownBeyondMin(InstanceContext instanceContext, + private void handleScalingDownBeyondMin(ParentInstanceContext instanceContext, NetworkPartitionContext nwPartitionContext, boolean forceScaleDown) { //Traverse through all the children to see whether all have sent the scale down @@ -745,7 +746,7 @@ public class GroupMonitor extends ParentComponentMonitor { String parentPartitionId = parentInstanceContext.getPartitionId(); if (parentPartitionId != null && networkPartitionContext.getPartitionCtxt(parentPartitionId) == null) { - GroupLevelPartitionContext partitionContext = new GroupLevelPartitionContext(parentPartitionId, networkPartitionId); + ParentLevelPartitionContext partitionContext = new ParentLevelPartitionContext(parentPartitionId, networkPartitionId); networkPartitionContext.addPartitionContext(partitionContext); if (log.isInfoEnabled()) { log.info("[Partition] " + parentPartitionId + "has been added for the " + "[Group] " + this.id); @@ -772,9 +773,9 @@ public class GroupMonitor extends ParentComponentMonitor { if (networkPartitionContext.getPartitionCtxt(partition.getId()) == null) { - GroupLevelPartitionContext groupLevelPartitionContext = new GroupLevelPartitionContext( + ParentLevelPartitionContext parentLevelPartitionContext = new ParentLevelPartitionContext( partition.getId(), networkPartitionId, deploymentPolicyId); - networkPartitionContext.addPartitionContext(groupLevelPartitionContext); + networkPartitionContext.addPartitionContext(parentLevelPartitionContext); if (log.isInfoEnabled()) { log.info(String.format("[Partition] %s has been added for the [Group] %s", partition.getId(), this.id)); @@ -791,11 +792,11 @@ public class GroupMonitor extends ParentComponentMonitor { * Creates the group instance and adds the required context objects * * @param group the group - * @param parentInstanceContext the parent instance context + * @param parentInstance the parent instance context * @param partitionContext partition-context used to create the group instance * @param parentLevelNetworkPartitionContext the group level network partition context */ - private String createGroupInstanceAndAddToMonitor(Group group, Instance parentInstanceContext, + private String createGroupInstanceAndAddToMonitor(Group group, Instance parentInstance, PartitionContext partitionContext, NetworkPartitionContext parentLevelNetworkPartitionContext, GroupInstance groupInstance) { @@ -807,19 +808,19 @@ public class GroupMonitor extends ParentComponentMonitor { partitionId = partitionContext.getPartitionId(); } - groupInstance = createGroupInstance(group, parentInstanceContext.getNetworkPartitionId(), - parentInstanceContext.getInstanceId(), partitionId); + groupInstance = createGroupInstance(group, parentInstance.getNetworkPartitionId(), + parentInstance.getInstanceId(), partitionId); } this.addInstance(groupInstance); String instanceId = groupInstance.getInstanceId(); - GroupInstanceContext groupInstanceContext = new GroupInstanceContext(instanceId); - groupInstanceContext.setParentInstanceId(groupInstance.getParentId()); + ParentInstanceContext parentInstanceContext = new ParentInstanceContext(instanceId); + parentInstanceContext.setParentInstanceId(groupInstance.getParentId()); - groupInstanceContext.addPartitionContext((GroupLevelPartitionContext) partitionContext); - parentLevelNetworkPartitionContext.addInstanceContext(groupInstanceContext); - parentLevelNetworkPartitionContext.addPendingInstance(groupInstanceContext); + parentInstanceContext.addPartitionContext((ParentLevelPartitionContext) partitionContext); + parentLevelNetworkPartitionContext.addInstanceContext(parentInstanceContext); + parentLevelNetworkPartitionContext.addPendingInstance(parentInstanceContext); if (log.isInfoEnabled()) { log.info("Group [Instance context] " + instanceId + @@ -827,7 +828,7 @@ public class GroupMonitor extends ParentComponentMonitor { } if (partitionContext != null) { - ((GroupLevelPartitionContext) partitionContext).addActiveInstance(groupInstance); + ((ParentLevelPartitionContext) partitionContext).addActiveInstance(groupInstance); } return instanceId; @@ -923,16 +924,16 @@ public class GroupMonitor extends ParentComponentMonitor { String parentPartitionId) { PartitionContext partitionContext = null; // Get partitionContext to create instance in - List<GroupLevelPartitionContext> partitionContexts = parentLevelNetworkPartitionContext. + List<ParentLevelPartitionContext> partitionContexts = parentLevelNetworkPartitionContext. getPartitionCtxts(); - GroupLevelPartitionContext[] groupLevelPartitionContexts = - new GroupLevelPartitionContext[partitionContexts.size()]; + ParentLevelPartitionContext[] parentLevelPartitionContexts = + new ParentLevelPartitionContext[partitionContexts.size()]; if (parentPartitionId == null) { if (!partitionContexts.isEmpty()) { PartitionAlgorithm algorithm = this.getAutoscaleAlgorithm( parentLevelNetworkPartitionContext.getPartitionAlgorithm()); partitionContext = algorithm.getNextScaleUpPartitionContext( - (partitionContexts.toArray(groupLevelPartitionContexts))); + (partitionContexts.toArray(parentLevelPartitionContexts))); } } else { partitionContext = parentLevelNetworkPartitionContext. http://git-wip-us.apache.org/repos/asf/stratos/blob/dd3dce60/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java index e033f93..105d3aa 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java @@ -29,6 +29,7 @@ import org.apache.stratos.autoscaler.applications.dependency.DependencyTree; import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationChildContext; import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; import org.apache.stratos.autoscaler.context.InstanceContext; +import org.apache.stratos.autoscaler.context.application.ParentInstanceContext; import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException; @@ -274,12 +275,13 @@ public abstract class ParentComponentMonitor extends Monitor { if (networkPartitionContext != null) { InstanceContext instanceContext = networkPartitionContext. getInstanceContext(instanceId); + ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext; if (instanceContext != null) { - if (instanceContext.containsScalingEvent(id)) { - instanceContext.removeScalingEvent(id); - instanceContext.addScalingEvent(scalingEvent); + if (parentInstanceContext.containsScalingEvent(id)) { + parentInstanceContext.removeScalingEvent(id); + parentInstanceContext.addScalingEvent(scalingEvent); } else { - instanceContext.addScalingEvent(scalingEvent); + parentInstanceContext.addScalingEvent(scalingEvent); } } } @@ -298,8 +300,9 @@ public abstract class ParentComponentMonitor extends Monitor { String networkPartitionId = scalingDownBeyondMinEvent.getNetworkPartitionId(); String instanceId = scalingDownBeyondMinEvent.getInstanceId(); - getNetworkPartitionContext(networkPartitionId).getInstanceContext(instanceId). - addScalingDownBeyondMinEvent(scalingDownBeyondMinEvent); + InstanceContext instanceContext = getNetworkPartitionContext(networkPartitionId). + getInstanceContext(instanceId); + ((ParentInstanceContext)instanceContext).addScalingDownBeyondMinEvent(scalingDownBeyondMinEvent); } @Override @@ -320,11 +323,12 @@ public abstract class ParentComponentMonitor extends Monitor { InstanceContext instanceContext = networkPartitionContext. getInstanceContext(instanceId); if (instanceContext != null) { - if (instanceContext.containsScalingEvent(id)) { - instanceContext.removeScalingOverMaxEvent(id); - instanceContext.addScalingOverMaxEvent(scalingUpBeyondMaxEvent); + ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext; + if (parentInstanceContext.containsScalingEvent(id)) { + parentInstanceContext.removeScalingOverMaxEvent(id); + parentInstanceContext.addScalingOverMaxEvent(scalingUpBeyondMaxEvent); } else { - instanceContext.addScalingOverMaxEvent(scalingUpBeyondMaxEvent); + parentInstanceContext.addScalingOverMaxEvent(scalingUpBeyondMaxEvent); } } } @@ -713,7 +717,7 @@ public abstract class ParentComponentMonitor extends Monitor { * the scale notification from the child * @param networkPartitionContext network-partition-context which belongs to the instance */ - protected void handleDependentScaling(InstanceContext instanceContext, + protected void handleDependentScaling(ParentInstanceContext instanceContext, NetworkPartitionContext networkPartitionContext) { /** * Dependency scaling handling http://git-wip-us.apache.org/repos/asf/stratos/blob/dd3dce60/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl index 56e9164..6e76706 100644 --- a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl @@ -33,8 +33,6 @@ global java.lang.String clusterId; global Integer roundedRequiredInstanceCount; global org.apache.stratos.autoscaler.rule.RuleTasksDelegator delegator; global java.lang.String algorithmName; -global java.lang.Boolean isPrimary; -global java.util.List primaryMembers; rule "Dependent Scaling Rule" dialect "mvel" @@ -84,7 +82,7 @@ dialect "mvel" log.info("[dependency-scale] [scale-up] Partition available, hence trying to spawn an instance to scale up!" ); log.debug("[dependency-scale] [scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId ); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary); + delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId()); count++; } else { partitionsAvailable = false; @@ -130,8 +128,6 @@ dialect "mvel" for(MemberStatsContext memberStatsContext: partitionContext.getMemberStatsContexts().values()){ - if( !primaryMembers.contains(memberStatsContext.getMemberId()) ) { - LoadAverage loadAverage = memberStatsContext.getLoadAverage(); log.debug("[dependency-scale] [scale-down] " + " [cluster] " + clusterId + " [member] " + memberStatsContext.getMemberId() + " Load average: " + loadAverage); @@ -161,9 +157,6 @@ dialect "mvel" lowestOverallLoad = overallLoad; } - - } - } if(selectedMemberStatsContext != null) { log.info("[dependency-scale] [scale-down] Trying to terminating an instace to scale down!" ); http://git-wip-us.apache.org/repos/asf/stratos/blob/dd3dce60/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl index 96b60da..06b7fe1 100755 --- a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl @@ -44,8 +44,6 @@ global org.apache.stratos.autoscaler.context.AutoscalerContext context; global org.apache.stratos.autoscaler.rule.RuleTasksDelegator delegator; global java.util.Map partitionCtxts; global java.lang.String clusterId; -global java.lang.Boolean isPrimary; -global Integer primaryMemberCount; global java.lang.String algorithmName; rule "Minimum Rule" @@ -59,20 +57,13 @@ dialect "mvel" eval(log.debug("[min-check] [network-partition] " + clusterInstanceContext.getNetworkPartitionId() + " [cluster-instance] " + clusterInstanceContext.getId() + " [cluster] " + clusterId + " Non terminated member count: " + clusterInstanceContext.getNonTerminatedMemberCount())) eval(log.debug("[min-check] [network-partition] " + clusterInstanceContext.getNetworkPartitionId() + " [cluster-instance] " + clusterInstanceContext.getId() + " [cluster] " + clusterId + " Minimum member count: " + clusterInstanceContext.getMinInstanceCount())) - eval ( (isPrimary && (primaryMemberCount < clusterInstanceContext.getMinInstanceCount())) || ( !isPrimary && (clusterInstanceContext.getNonTerminatedMemberCount() < clusterInstanceContext.getMinInstanceCount())) ) + eval ( (clusterInstanceContext.getNonTerminatedMemberCount() < clusterInstanceContext.getMinInstanceCount())) then int additionalInstances = 0; - if(isPrimary){ - - additionalInstances = clusterInstanceContext.getMinInstanceCount() - primaryMemberCount; - log.debug("[min-check] true [primary] true [primary member count] " + primaryMemberCount + " [cluster] " + clusterId); - } else { - - additionalInstances = clusterInstanceContext.getMinInstanceCount() - clusterInstanceContext.getNonTerminatedMemberCount(); - log.debug("[min-check] true [primary] false [non terminated member count] " + clusterInstanceContext.getNonTerminatedMemberCount()+ " [cluster] " + clusterId); - } + additionalInstances = clusterInstanceContext.getMinInstanceCount() - clusterInstanceContext.getNonTerminatedMemberCount(); + log.debug("[min-check] true [non terminated member count] " + clusterInstanceContext.getNonTerminatedMemberCount()+ " [cluster] " + clusterId); int count = 0; boolean partitionsAvailable = true; @@ -84,7 +75,7 @@ dialect "mvel" log.info("[min-check] Partition available, hence trying to spawn an instance to fulfil minimum count!" + " [cluster] " + clusterId); log.debug("[min-check] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary); + delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId()); count++; } else { http://git-wip-us.apache.org/repos/asf/stratos/blob/dd3dce60/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl index e6f8f67..4b55123 100644 --- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl +++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl @@ -24,7 +24,7 @@ import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.autoscaler.context.AutoscalerContext; import org.apache.stratos.autoscaler.context.member.MemberStatsContext; import org.apache.stratos.autoscaler.util.AutoscalerConstants; -import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext; +import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext; import org.apache.stratos.autoscaler.pojo.policy.PolicyManager; import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy; import org.apache.stratos.autoscaler.pojo.policy.autoscale.RequestsInFlight; @@ -51,8 +51,6 @@ global java.lang.String clusterId; global java.lang.Boolean rifReset; global java.lang.Boolean mcReset; global java.lang.Boolean laReset; -global java.lang.Boolean isPrimary; -global java.util.List primaryMembers; global java.lang.Boolean arspiReset; global java.lang.String algorithmName; @@ -182,7 +180,7 @@ dialect "mvel" " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold); log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId ); - delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary); + delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId()); count++; } else { @@ -237,14 +235,9 @@ dialect "mvel" " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold ); - // In partition context member stat context, all the primary members need to be - // avoided being selected as the member to terminated - for(MemberStatsContext memberStatsContext: partitionContext.getMemberStatsContexts().values()){ - if( !primaryMembers.contains(memberStatsContext.getMemberId()) ) { - LoadAverage loadAverage = memberStatsContext.getLoadAverage(); log.debug("[scale-down] " + " [cluster] " + clusterId + " [member] " + memberStatsContext.getMemberId() + " Load average: " + loadAverage); @@ -278,9 +271,6 @@ dialect "mvel" lowestOverallLoad = overallLoad; } - - } - } if(selectedMemberStatsContext != null) { log.info("[scale-down] Trying to terminating an instace to scale down!" );
