Handle obsolete partition contexts in partition selection algorithm
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/17cfb019 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/17cfb019 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/17cfb019 Branch: refs/heads/master Commit: 17cfb01907caddcdefbea303829aa80cc4c1edaf Parents: 528f5b5 Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Apr 24 14:17:53 2015 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Apr 24 14:17:53 2015 +0530 ---------------------------------------------------------------------- .../autoscaler/algorithms/partition/OneAfterAnother.java | 5 +++-- .../stratos/autoscaler/algorithms/partition/RoundRobin.java | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/17cfb019/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java index a6b6386..226e57f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java @@ -39,7 +39,7 @@ public class OneAfterAnother implements PartitionAlgorithm { for (PartitionContext partitionContext : partitionContexts) { - if (partitionContext.getNonTerminatedMemberCount() < partitionContext.getMax()) { + if (partitionContext.getNonTerminatedMemberCount() < partitionContext.getMax() && !partitionContext.isObsoletePartition()) { if (log.isDebugEnabled()) { log.debug(String.format("[one-after-another algorithm] [scale-up] [partition] %s has space to create " + @@ -57,7 +57,8 @@ public class OneAfterAnother implements PartitionAlgorithm { for (int partitionIndex = partitionContexts.length - 1; partitionIndex >= 0; partitionIndex--) { - if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > 0) { + if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > 0 + && !partitionContexts[partitionIndex].isObsoletePartition()) { if (log.isDebugEnabled()) { log.debug(String.format("[one-after-another algorithm] [scale-down] [partition] %s has members that" + http://git-wip-us.apache.org/repos/asf/stratos/blob/17cfb019/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java index d274d0f..1ced903 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java @@ -50,7 +50,8 @@ public class RoundRobin implements PartitionAlgorithm { break; } - if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() < lowestInstanceCount) { + if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() < lowestInstanceCount + && !partitionContexts[partitionIndex].isObsoletePartition()) { lowestInstanceCount = partitionContexts[partitionIndex].getNonTerminatedMemberCount(); selectedIndex = partitionIndex; } @@ -84,7 +85,8 @@ public class RoundRobin implements PartitionAlgorithm { for (int partitionIndex = partitionContexts.length - 1; partitionIndex >= 0; partitionIndex--) { - if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > highestInstanceCount) { + if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > highestInstanceCount + && !partitionContexts[partitionIndex].isObsoletePartition()) { highestInstanceCount = partitionContexts[partitionIndex].getNonTerminatedMemberCount(); selectedIndex = partitionIndex;
