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 2013/12/13 08:00:38 UTC

git commit: Make sure scale check doesn't run if Lb stats did not receive

Updated Branches:
  refs/heads/master e9b884be3 -> 707788c89


Make sure scale check doesn't run if Lb stats did not receive


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/707788c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/707788c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/707788c8

Branch: refs/heads/master
Commit: 707788c8982142b8231e55723d24ee3bfc4f79ac
Parents: e9b884b
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Dec 13 12:35:19 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Dec 13 12:35:19 2013 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/ClusterMonitor.java      | 22 +++++++-----
 .../autoscaler/NetworkPartitionContext.java     | 38 ++++++++++++++++++++
 .../stratos/autoscaler/PartitionContext.java    |  4 +--
 3 files changed, 53 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/707788c8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
index be29a48..7ab70b7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
@@ -162,17 +162,21 @@ public class ClusterMonitor implements Runnable{
 
             }
 
-            scaleCheckKnowledgeSession.setGlobal("clusterId", clusterId);
-            scaleCheckKnowledgeSession.setGlobal("deploymentPolicy", deploymentPolicy);
-            scaleCheckKnowledgeSession.setGlobal("autoscalePolicy", autoscalePolicy);
+            if(networkPartitionContext.isRifReset()){
+                scaleCheckKnowledgeSession.setGlobal("clusterId", clusterId);
+                scaleCheckKnowledgeSession.setGlobal("deploymentPolicy", deploymentPolicy);
+                scaleCheckKnowledgeSession.setGlobal("autoscalePolicy", autoscalePolicy);
 
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Running scale check for network partition %s ", networkPartitionContext.getId()));
-            }
-
-            scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(scaleCheckKnowledgeSession
-                    , scaleCheckFactHandle, networkPartitionContext);
+                if (log.isDebugEnabled()) {
+                    log.debug(String.format("Running scale check for network partition %s ", networkPartitionContext.getId()));
+                }
 
+                scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(scaleCheckKnowledgeSession
+                        , scaleCheckFactHandle, networkPartitionContext);
+            } else if(log.isDebugEnabled()){
+                    log.debug(String.format("Scale will not run since the LB statistics have not received before this " +
+                            "cycle for network partition %s", networkPartitionContext.getId()) );
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/707788c8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
index 63e8338..63a8343 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.stratos.autoscaler;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 
 import java.util.HashMap;
@@ -29,6 +31,7 @@ import java.util.Map;
  */
 public class NetworkPartitionContext {
 
+    private static final Log log = LogFactory.getLog(NetworkPartitionContext.class);
     private String id;
 
     private String defaultLbClusterId;
@@ -38,6 +41,9 @@ public class NetworkPartitionContext {
     private Map<String, String> clusterIdToLBClusterIdMap;
 
     private String partitionAlgorithm;
+
+    //boolean values to keep whether the requests in flight parameters are reset or not
+    private boolean rifReset = false, averageRifReset = false, gradientRifReset = false, secondDerivativeRifRest = false;
     
     //FIXME this should be populated via PartitionGroups a.k.a. NetworkPartitions
     private int minInstanceCount = 1, maxInstanceCount = 1;
@@ -211,6 +217,14 @@ public class NetworkPartitionContext {
 
     public void setAverageRequestsInFlight(float averageRequestsInFlight) {
         this.averageRequestsInFlight = averageRequestsInFlight;
+        averageRifReset = true;
+        if(secondDerivativeRifRest && gradientRifReset){
+            rifReset = true;
+            if(log.isDebugEnabled()){
+                log.debug(String.format("Requests in flights stats are reset, ready to do scale check [network partition] "
+                        , this.id));
+            }
+        }
     }
 
     public float getRequestsInFlightSecondDerivative() {
@@ -219,6 +233,14 @@ public class NetworkPartitionContext {
 
     public void setRequestsInFlightSecondDerivative(float requestsInFlightSecondDerivative) {
         this.requestsInFlightSecondDerivative = requestsInFlightSecondDerivative;
+        secondDerivativeRifRest = true;
+        if(averageRifReset && gradientRifReset){
+            rifReset = true;
+            if(log.isDebugEnabled()){
+                log.debug(String.format("Requests in flights stats are reset, ready to do scale check [network partition] "
+                        , this.id));
+            }
+        }
     }
 
     public float getRequestsInFlightGradient() {
@@ -227,8 +249,23 @@ public class NetworkPartitionContext {
 
     public void setRequestsInFlightGradient(float requestsInFlightGradient) {
         this.requestsInFlightGradient = requestsInFlightGradient;
+        gradientRifReset = true;
+        if(secondDerivativeRifRest && averageRifReset){
+            rifReset = true;
+            if(log.isDebugEnabled()){
+                log.debug(String.format("Requests in flights stats are reset, ready to do scale check [network partition] "
+                        , this.id));
+            }
+        }
     }
 
+    public boolean isRifReset() {
+        return rifReset;
+    }
+
+    public void setRifReset(boolean rifReset) {
+        this.rifReset = rifReset;
+    }
 
     public String getId() {
         return id;
@@ -306,4 +343,5 @@ public class NetworkPartitionContext {
     public void setPartitionToMemberCountMap(Map<String, Integer> partitionToMemberCountMap) {
         this.partitionToMemberCountMap = partitionToMemberCountMap;
     }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/707788c8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
index 441924d..0f46893 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
@@ -52,8 +52,8 @@ public class PartitionContext {
     // properties
     private Properties properties;
     
-    // 5 mints as the default
-    private long expiryTime = 300000;
+    // 10 mints as the default
+    private long expiryTime = 600000;
     // pending members
     private List<MemberContext> pendingMembers;