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;