adding configurable setting in order to spin and terminate instances in parallel


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

Branch: refs/heads/master
Commit: c0e24c32beafbf0a57772ea110048a4d154b481a
Parents: 5b2af1a
Author: reka <[email protected]>
Authored: Mon Jul 27 14:54:27 2015 +0530
Committer: reka <[email protected]>
Committed: Wed Jul 29 16:11:07 2015 +0530

----------------------------------------------------------------------
 .../partition/ClusterLevelPartitionContext.java      | 15 ++++++++++++++-
 .../stratos/common/constants/StratosConstants.java   |  1 +
 .../distribution/src/main/conf/autoscaler.xml        |  1 +
 3 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c0e24c32/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
index 4bbd73a..3ef2e45 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
@@ -58,6 +58,8 @@ public class ClusterLevelPartitionContext extends 
PartitionContext implements Se
 
     // 15 mints as the default
     private long pendingMemberExpiryTime = 900000;
+    //
+    private boolean spinTerminateParallel;
     // pending members
     private List<MemberContext> pendingMembers;
 
@@ -149,6 +151,7 @@ public class ClusterLevelPartitionContext extends 
PartitionContext implements Se
         XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
         pendingMemberExpiryTime = 
conf.getLong(StratosConstants.PENDING_MEMBER_EXPIRY_TIMEOUT, 900000);
         obsoltedMemberExpiryTime = 
conf.getLong(StratosConstants.OBSOLETED_MEMBER_EXPIRY_TIMEOUT, 86400000);
+        spinTerminateParallel = 
conf.getBoolean(StratosConstants.SPIN_TERMINATE_PARALLEL, false);
         terminationPendingMemberExpiryTime = 
conf.getLong(StratosConstants.PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT, 
1800000);
         if (log.isDebugEnabled()) {
             log.debug("Member expiry time is set to: " + 
pendingMemberExpiryTime);
@@ -484,7 +487,17 @@ public class ClusterLevelPartitionContext extends 
PartitionContext implements Se
     }
 
     public int getNonTerminatedMemberCount() {
-        return activeMembers.size() + pendingMembers.size();
+        int nonTerminatedMemberCount = 0;
+        if(spinTerminateParallel) {
+            // Returning all the pending members as there shouldn't be a 
spawning
+            // before complete termination.
+            // Will be applicable only when having min1*max1 situation
+            nonTerminatedMemberCount = activeMembers.size() + 
pendingMembers.size() +
+                    terminationPendingMembers.size() + obsoletedMembers.size();
+        } else {
+            nonTerminatedMemberCount = activeMembers.size() + 
pendingMembers.size();
+        }
+        return nonTerminatedMemberCount;
     }
 
     public List<MemberContext> getActiveMembers() {

http://git-wip-us.apache.org/repos/asf/stratos/blob/c0e24c32/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index 1275f5c..d95907b 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -164,6 +164,7 @@ public class StratosConstants {
 
     // member expiry timeout constants
     public static final String PENDING_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.pendingMemberExpiryTimeout";
+    public static final String SPIN_TERMINATE_PARALLEL = 
"autoscaler.member.pendingMemberExpiryTimeout";
     public static final String OBSOLETED_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.obsoletedMemberExpiryTimeout";
     public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.pendingTerminationMemberExpiryTimeout";
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/c0e24c32/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/autoscaler.xml 
b/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
index 2577070..8c10e2e 100644
--- a/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
+++ b/products/stratos/modules/distribution/src/main/conf/autoscaler.xml
@@ -37,6 +37,7 @@
                 <clientTimeout>300000</clientTimeout>
         </identity>
         <member>
+            <spinAfterTerminate>false</spinAfterTerminate>
             <!-- this is the maximum time(ms) a member can be in pending 
member state -->
             <pendingMemberExpiryTimeout>900000</pendingMemberExpiryTimeout>
             <!-- this is the maximum time(ms) a member can be in obsoleted 
member state -->

Reply via email to