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 -->
