Repository: stratos
Updated Branches:
  refs/heads/master 0e496d9d0 -> 03de83172


STRATOS-1430 - Application fails to undeploy when it is activated again


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

Branch: refs/heads/master
Commit: 03de83172309c2932075fb5284c120ca610bbf0a
Parents: 0e496d9
Author: lasinducharith <[email protected]>
Authored: Fri Jun 12 22:04:51 2015 +0530
Committer: lasinducharith <[email protected]>
Committed: Fri Jun 12 22:04:51 2015 +0530

----------------------------------------------------------------------
 .../context/cluster/ClusterInstanceContext.java | 50 +++++++-------------
 1 file changed, 17 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/03de8317/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
index 9a8f31d..a90d929 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
@@ -32,7 +32,9 @@ import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /*
  * It holds the runtime data of a VM cluster
@@ -43,7 +45,7 @@ public class ClusterInstanceContext extends InstanceContext {
 
     private final String partitionAlgorithm;
     // Map<PartitionId, Partition Context>
-    protected List<ClusterLevelPartitionContext> partitionCtxts;
+    protected Map<String, ClusterLevelPartitionContext> partitionCtxts;
     //boolean values to keep whether the requests in flight parameters are 
reset or not
     private boolean rifReset = false, averageRifReset = false, 
gradientRifReset = false, secondDerivativeRifRest = false;
     //boolean values to keep whether the memory consumption parameters are 
reset or not
@@ -93,9 +95,8 @@ public class ClusterInstanceContext extends InstanceContext {
         this.clusterId = clusterId;
         this.minInstanceCount = min;
         this.maxInstanceCount = max;
-        partitionCtxts = new ArrayList<ClusterLevelPartitionContext>();
         this.partitionAlgorithm = partitionAlgo;
-        //partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>();
+        partitionCtxts = new HashMap<String, ClusterLevelPartitionContext>();
         requestsInFlight = new RequestsInFlight();
         loadAverage = new LoadAverage();
         memoryConsumption = new MemoryConsumption();
@@ -119,10 +120,10 @@ public class ClusterInstanceContext extends 
InstanceContext {
     }
 
     public List<ClusterLevelPartitionContext> getPartitionCtxts() {
-        return partitionCtxts;
+        return new 
ArrayList<ClusterLevelPartitionContext>(partitionCtxts.values());
     }
 
-    public void setPartitionCtxts(List<ClusterLevelPartitionContext> 
partitionCtxt) {
+    public void setPartitionCtxt(Map<String, ClusterLevelPartitionContext> 
partitionCtxt) {
         this.partitionCtxts = partitionCtxt;
     }
 
@@ -131,55 +132,38 @@ public class ClusterInstanceContext extends 
InstanceContext {
 //    }
 
     public ClusterLevelPartitionContext[] getPartitionCtxtsAsAnArray() {
-
-        return partitionCtxts.toArray(new 
ClusterLevelPartitionContext[partitionCtxts.size()]);
+        return partitionCtxts.values().toArray(new 
ClusterLevelPartitionContext[partitionCtxts.size()]);
     }
 
     public boolean partitionCtxtAvailable(String partitionId) {
-
-        for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {
-            if (partitionContext.getPartitionId().equals(partitionId)) {
-                return true;
-            }
-        }
-        return false;
+        return partitionCtxts.containsKey(partitionId);
     }
 
     public void addPartitionCtxt(ClusterLevelPartitionContext ctxt) {
-        this.partitionCtxts.add(ctxt);
+        this.partitionCtxts.put(ctxt.getPartitionId(), ctxt);
     }
 
     public void removePartitionCtxt(String partitionId) {
-        this.partitionCtxts.remove(partitionId);
+        if (partitionCtxts.containsKey(partitionId)) {
+            partitionCtxts.remove(partitionId);
+        }
     }
 
     public ClusterLevelPartitionContext getPartitionCtxt(String id) {
-
-        for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {
-            if (partitionContext.getPartitionId().equals(id)) {
-                return partitionContext;
-            }
-        }
-        return null;
+        return partitionCtxts.get(id);
     }
 
     public ClusterLevelPartitionContext getPartitionCtxt(Member member) {
         log.info("Getting [Partition] " + member.getPartitionId());
         String partitionId = member.getPartitionId();
 
-        for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {
-            if (partitionContext.getPartitionId().equals(partitionId)) {
-                log.info("Returning partition context, of [partition] " + 
partitionId);
-                return partitionContext;
-            }
-        }
-        return null;
+        return partitionCtxts.get(partitionId);
     }
 
     public int getActiveMemberCount() {
 
         int activeMemberCount = 0;
-        for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {
+        for (ClusterLevelPartitionContext partitionContext : 
partitionCtxts.values()) {
 
             activeMemberCount += partitionContext.getActiveMemberCount();
         }
@@ -189,7 +173,7 @@ public class ClusterInstanceContext extends InstanceContext 
{
     public int getNonTerminatedMemberCount() {
 
         int nonTerminatedMemberCount = 0;
-        for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {
+        for (ClusterLevelPartitionContext partitionContext : 
partitionCtxts.values()) {
 
             nonTerminatedMemberCount += 
partitionContext.getNonTerminatedMemberCount();
         }
@@ -488,7 +472,7 @@ public class ClusterInstanceContext extends InstanceContext 
{
 
     public int getActiveMembers() {
         int activeMembers = 0;
-        for (ClusterLevelPartitionContext partitionContext : 
this.partitionCtxts) {
+        for (ClusterLevelPartitionContext partitionContext : 
partitionCtxts.values()) {
             activeMembers += partitionContext.getActiveInstanceCount();
         }
         return activeMembers;

Reply via email to