You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2014/12/14 18:27:30 UTC
stratos git commit: Fix dependency scaling notification logic
Repository: stratos
Updated Branches:
refs/heads/4.1.0-test b32d45f57 -> 2623fd2b4
Fix dependency scaling notification logic
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2623fd2b
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2623fd2b
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2623fd2b
Branch: refs/heads/4.1.0-test
Commit: 2623fd2b4b53ef8d978bcb57952279846426ad8f
Parents: b32d45f
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Sun Dec 14 22:59:15 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Sun Dec 14 22:59:31 2014 +0530
----------------------------------------------------------------------
.../autoscaler/rule/RuleTasksDelegator.java | 3 +-
.../src/main/conf/drools/scaling.drl | 34 ++++++++++----------
2 files changed, 19 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2623fd2b/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 34ff92b..415bf11 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
@@ -308,13 +308,14 @@ public class RuleTasksDelegator {
public void delegateScalingDependencyNotification(String clusterId, String networkPartitionId, String instanceId,
- float factor) {
+ int requiredInstanceCount, int minimumInstanceCount) {
if(log.isDebugEnabled()) {
log.debug("Scaling dependent notification..");
}
//Notify parent for checking scaling dependencies
AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
+ float factor = requiredInstanceCount / minimumInstanceCount;
if (clusterMonitor instanceof VMClusterMonitor) {
VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) clusterMonitor;
http://git-wip-us.apache.org/repos/asf/stratos/blob/2623fd2b/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 a73f180..96783dc 100644
--- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
@@ -124,29 +124,29 @@ dialect "mvel"
int additionalInstances = numberOfRequiredInstances - activeInstancesCount ;
clusterInstanceContext.resetScaleDownRequestsCount();
- //Calculating the factor scaling
- float factor = numberOfRequiredInstances / clusterInstanceContext.getMinInstanceCount();
+ log.debug("[scale-up] " + " has scaling dependents " + clusterInstanceContext.hasScalingDependants() + " [cluster] " + clusterId );
+ if(clusterInstanceContext.hasScalingDependants()) {
- boolean partitionsAvailable = true;
- int count = 0;
- while(count != additionalInstances && partitionsAvailable){
+ log.debug("[scale-up] Notifying dependencies [cluster] " + clusterId);
+ delegator.delegateScalingDependencyNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(), clusterInstanceContext.getId(), numberOfRequiredInstances, clusterInstanceContext.getMinInstanceCount());
+ } else {
- ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext)autoscaleAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
- if(partitionContext != null){
+ boolean partitionsAvailable = true;
+ int count = 0;
+
+ while(count != additionalInstances && partitionsAvailable){
- log.info("[scale-up] Partition available, hence trying to spawn an instance to scale up!" );
- log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
- log.debug("[scale-up] " + " has scaling dependents " + clusterInstanceContext.hasScalingDependants() + " [cluster] " + clusterId );
- if(clusterInstanceContext.hasScalingDependants()) {
+ ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext)autoscaleAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
+ if(partitionContext != null){
- delegator.delegateScalingDependencyNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(), clusterInstanceContext.getId(), factor);
+ log.info("[scale-up] Partition available, hence trying to spawn an instance to scale up!" );
+ log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
+ delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary);
+ count++;
} else {
- delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary);
- }
- count++;
- } else {
- partitionsAvailable = false;
+ partitionsAvailable = false;
+ }
}
}
} else{