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{