Updated Branches:
  refs/heads/master 803e58cd8 -> 22ff44032

Introduce new member state to keep termination pending members


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

Branch: refs/heads/master
Commit: 64e500febe104b73f4e270477270c7b01408c2c1
Parents: 0ca6239
Author: Lahiru Sandaruwan <[email protected]>
Authored: Tue Jan 14 15:15:54 2014 +0530
Committer: Lahiru Sandaruwan <[email protected]>
Committed: Tue Jan 14 15:15:54 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/NetworkPartitionContext.java     |   7 +
 .../stratos/autoscaler/PartitionContext.java    | 129 ++++++++++++++-----
 .../autoscaler/algorithm/OneAfterAnother.java   |   6 +-
 .../autoscaler/algorithm/RoundRobin.java        |   6 +-
 .../cloud/controller/CloudControllerClient.java |   2 +-
 .../topology/AutoscalerTopologyReceiver.java    |  13 +-
 .../autoscaler/rule/RuleTasksDelegator.java     |   8 +-
 .../stratos/autoscaler/util/AutoscalerUtil.java |   8 +-
 .../stratos/autoscaler/TestMinimumRule.java     |   2 +-
 .../receiver/topology/TopologyManager.java      |   2 +-
 .../distribution/src/main/conf/scaling.drl      |   2 +-
 .../distribution/src/main/conf/terminateall.drl |   2 +-
 12 files changed, 133 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/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 6e36da3..3e089cf 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
@@ -477,6 +477,13 @@ public class NetworkPartitionContext implements 
Serializable{
         return partitions;
     }
 
+    public int getNonTerminatedMemberCountOfPartition(String partitionId) {
+        if(partitionCtxts.containsKey(partitionId)){
+            return getPartitionCtxt(partitionId).getNonTerminatedMemberCount();
+        }
+        return 0;
+    }
+
 //    public void setPartitions(Partition[] partitions) {
 //        this.partitions = partitions;
 //        for (Partition partition: partitions){

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/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 1670ea7..3ea8d80 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
@@ -48,7 +48,7 @@ public class PartitionContext implements Serializable{
     private String serviceName;
     private String networkPartitionId;
     private Partition partition;
-    private int currentActiveMemberCount = 0;
+//    private int currentActiveMemberCount = 0;
     private int minimumMemberCount = 0;
     
     // properties
@@ -63,15 +63,24 @@ public class PartitionContext implements Serializable{
     private List<String> obsoletedMembers;
     
     // Contains the members that CEP notified as faulty members.
-    private List<String> faultyMembers;
+//    private List<String> faultyMembers;
     
     // active members
     private List<MemberContext> activeMembers;
 
+    // termination pending members, member is added to this when Autoscaler 
send grace fully shut down event
+    private List<MemberContext> terminationPendingMembers;
+
+    //Keep statistics come from CEP
     private Map<String, MemberStatsContext> memberStatsContexts;
-    
+    private int nonTerminatedMemberCount;
+//    private int totalMemberCount;
+
     // for the use of tests
     public PartitionContext() {
+
+        this.activeMembers = new ArrayList<MemberContext>();
+        this.terminationPendingMembers = new ArrayList<MemberContext>();
     }
     
     public PartitionContext(Partition partition) {
@@ -80,8 +89,9 @@ public class PartitionContext implements Serializable{
         this.partitionId = partition.getId();
         this.pendingMembers = new ArrayList<MemberContext>();
         this.activeMembers = new ArrayList<MemberContext>();
-        this.obsoletedMembers = new CopyOnWriteArrayList<String>(); 
-        this.faultyMembers = new CopyOnWriteArrayList<String>();
+        this.terminationPendingMembers = new ArrayList<MemberContext>();
+        this.obsoletedMembers = new CopyOnWriteArrayList<String>();
+//        this.faultyMembers = new CopyOnWriteArrayList<String>();
         memberStatsContexts = new ConcurrentHashMap<String, 
MemberStatsContext>();
         Thread th = new Thread(new PendingMemberWatcher(this));
         th.start();
@@ -109,19 +119,19 @@ public class PartitionContext implements Serializable{
     public void setPartitionId(String partitionId) {
         this.partitionId = partitionId;
     }
-    public int getTotalMemberCount() {
-        // live count + pending count
-        return currentActiveMemberCount + pendingMembers.size();
-    }
-
-    public void incrementCurrentActiveMemberCount(int count) {
+//    public int getTotalMemberCount() {
+//        // live count + pending count
+//        return currentActiveMemberCount + pendingMembers.size();
+//    }
 
-        this.currentActiveMemberCount += count;
-    }
+//    public void incrementCurrentActiveMemberCount(int count) {
+//
+//        this.currentActiveMemberCount += count;
+//    }
     
-    public void decrementCurrentActiveMemberCount(int count) {
-        this.currentActiveMemberCount -= count;
-    }
+//    public void decrementCurrentActiveMemberCount(int count) {
+//        this.currentActiveMemberCount -= count;
+//    }
 
     public int getMinimumMemberCount() {
         return minimumMemberCount;
@@ -143,7 +153,7 @@ public class PartitionContext implements Serializable{
         this.pendingMembers.add(ctxt);
     }
     
-    public void removePendingMember(String memberId) {
+    public void movePendingMemberToActiveMembers(String memberId) {
         if (memberId == null) {
             return;
         }
@@ -161,8 +171,35 @@ public class PartitionContext implements Serializable{
                 // add to the activated list
                 this.activeMembers.add(pendingMember);
                 if (log.isDebugEnabled()) {
-                    log.debug("Pending member is removed and added to the " +
-                            "activated member list. Id: "+memberId);
+                    log.debug(String.format("Pending member is removed and 
added to the " +
+                            "activated member list. [Member Id] %s",memberId));
+                }
+                break;
+            }
+        }
+    }
+
+
+    public void moveActiveMemberToTerminationPendingMembers(String memberId) {
+        if (memberId == null) {
+            return;
+        }
+        for (Iterator<MemberContext> iterator = activeMembers.listIterator();
+                iterator.hasNext();) {
+            MemberContext activeMember = (MemberContext) iterator.next();
+            if(activeMember == null) {
+                iterator.remove();
+                continue;
+            }
+            if(memberId.equals(activeMember.getMemberId())){
+                // member is activated
+                // remove from pending list
+                iterator.remove();
+                // add to the activated list
+                this.terminationPendingMembers.add(activeMember);
+                if (log.isDebugEnabled()) {
+                    log.debug(String.format("Active member is removed and 
added to the " +
+                            "termination pending member list. [Member Id] %s", 
memberId));
                 }
                 break;
             }
@@ -176,6 +213,18 @@ public class PartitionContext implements Serializable{
     public void removeActiveMember(MemberContext ctxt) {
         this.activeMembers.remove(ctxt);
     }
+
+    public boolean removeTerminationPendingMember(String memberId) {
+        boolean terminationPendingMemberAvailable = false;
+        for (MemberContext memberContext: activeMembers){
+            if(memberContext.getMemberId().equals(memberId)){
+                terminationPendingMemberAvailable =true;
+                activeMembers.remove(memberContext);
+                break;
+            }
+        }
+        return terminationPendingMemberAvailable;
+    }
     
     public void addObsoleteMember(String memberId) {
         this.obsoletedMembers.add(memberId);
@@ -184,18 +233,18 @@ public class PartitionContext implements Serializable{
     public boolean removeObsoleteMember(String memberId) {
         return this.obsoletedMembers.remove(memberId);
     }
-    
-    public void addFaultyMember(String memberId) {
-        this.faultyMembers.add(memberId);
-    }
-    
-    public boolean removeFaultyMember(String memberId) {
-        return this.faultyMembers.remove(memberId);
-    }
-    
-    public List<String> getFaultyMembers() {
-        return this.faultyMembers;
-    }
+//
+//    public void addFaultyMember(String memberId) {
+//        this.faultyMembers.add(memberId);
+//    }
+//
+//    public boolean removeFaultyMember(String memberId) {
+//        return this.faultyMembers.remove(memberId);
+//    }
+//
+//    public List<String> getFaultyMembers() {
+//        return this.faultyMembers;
+//    }
 
     public long getExpiryTime() {
         return expiryTime;
@@ -263,6 +312,24 @@ public class PartitionContext implements Serializable{
         this.serviceName = serviceName;
     }
 
+    public List<MemberContext> getTerminationPendingMembers() {
+        return terminationPendingMembers;
+    }
+
+    public void setTerminationPendingMembers(List<MemberContext> 
terminationPendingMembers) {
+        this.terminationPendingMembers = terminationPendingMembers;
+    }
+
+    public int getTotalMemberCount() {
+
+        return activeMembers.size() + pendingMembers.size() + 
terminationPendingMembers.size();
+    }
+
+    public int getNonTerminatedMemberCount() {
+        return activeMembers.size() + pendingMembers.size();
+    }
+
+
     private class PendingMemberWatcher implements Runnable {
         private PartitionContext ctxt;
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
index 7d7e25c..636b372 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
@@ -60,7 +60,8 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
                     Partition currentPartition = (Partition) 
partitions.get(currentPartitionIndex);
                     String currentPartitionId = currentPartition.getId();
 
-                    if 
(networkPartitionContext.getMemberCountOfPartition(currentPartitionId) < 
currentPartition.getPartitionMax()) {
+                    if 
(networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId)
+                            < currentPartition.getPartitionMax()) {
                         // current partition is free
                         if (log.isDebugEnabled())
                             log.debug(String.format("A free space found for 
scale up in partition %s [current] %s [max] %s",
@@ -100,7 +101,8 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
                     String currentPartitionId = currentPartition.getId();
 
                     // has more than minimum instances.
-                    if 
(networkPartitionContext.getMemberCountOfPartition(currentPartitionId) > 
currentPartition.getPartitionMin()) {
+                    if 
(networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId)
 >
+                            currentPartition.getPartitionMin()) {
                         // current partition is free
                         if (log.isDebugEnabled())
                             log.debug(String.format("A free space found for 
scale down in partition %s [current] %s [min] %s",

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
index 48912c8..a24eb06 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
@@ -55,7 +55,8 @@ public class RoundRobin implements AutoscaleAlgorithm{
                int nextPartitionIndex = currentPartitionIndex  == 
noOfPartitions - 1 ? 0 : currentPartitionIndex+1;
                
networkPartitionContext.setCurrentPartitionIndex(nextPartitionIndex);
 
-               
if(networkPartitionContext.getMemberCountOfPartition(currentPartitionId) < 
currentPartition.getPartitionMax()){
+               
if(networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId)
+                        < currentPartition.getPartitionMax()){
                        // current partition is free
                        if(log.isDebugEnabled())
                                log.debug("Free space found in partition " + 
currentPartition.getId());
@@ -102,7 +103,8 @@ public class RoundRobin implements AutoscaleAlgorithm{
                 String currentPartitionId = currentPartition.getId();
 
                 // has more than minimum instances.
-                if 
(networkPartitionContext.getMemberCountOfPartition(currentPartitionId) > 
currentPartition.getPartitionMin()) {
+                if 
(networkPartitionContext.getNonTerminatedMemberCountOfPartition(currentPartitionId)
 >
+                        currentPartition.getPartitionMin()) {
                     // current partition is free
                     if (log.isDebugEnabled()) {
                         log.debug("Returning partition for scaling down " +

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index 061b3be..3104c33 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -131,7 +131,7 @@ public class CloudControllerClient {
                     clusterId, partition.getId(), lbClusterId, 
networkPartitionId));
             }
 
-            org.apache.stratos.cloud.controller.pojo.MemberContext member = 
new org.apache.stratos.cloud.controller.pojo.MemberContext();
+            MemberContext member = new MemberContext();
             member.setClusterId(clusterId);
             member.setPartition(partition);
             member.setLbClusterId(lbClusterId);

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
index 6aa34df..9906a96 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
@@ -200,11 +200,16 @@ public class AutoscalerTopologyReceiver implements 
Runnable {
 
                 PartitionContext partitionContext = 
networkPartitionContext.getPartitionCtxt(partitionId);
                 partitionContext.removeMemberStatsContext(e.getMemberId());
-                partitionContext.decrementCurrentActiveMemberCount(1);
+                
if(!partitionContext.removeTerminationPendingMember(e.getMemberId())){
 
-                if(log.isInfoEnabled()){
+                    if(log.isErrorEnabled()){
+                        log.error(String.format("Member is not available in 
termination pending list: [member] %s", e.getMemberId()));
+                    }
+                } else if(log.isInfoEnabled()){
                     log.info(String.format("Member stat context has been 
removed: [member] %s", e.getMemberId()));
                 }
+//                partitionContext.decrementCurrentActiveMemberCount(1);
+
 
             } finally {
                 TopologyManager.releaseReadLock();
@@ -240,8 +245,8 @@ public class AutoscalerTopologyReceiver implements Runnable 
{
                 if(log.isInfoEnabled()){
                     log.info(String.format("Member stat context has been 
added: [member] %s", memberId));
                 }
-                partitionContext.incrementCurrentActiveMemberCount(1);
-                partitionContext.removePendingMember(memberId);
+//                partitionContext.incrementCurrentActiveMemberCount(1);
+                partitionContext.movePendingMemberToActiveMembers(memberId);
 
             }
             finally{

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index c92955c..063c2c0 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -11,7 +11,6 @@ import org.apache.stratos.autoscaler.algorithm.RoundRobin;
 import 
org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import 
org.apache.stratos.autoscaler.client.cloud.controller.InstanceNotificationClient;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
-import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 import org.apache.stratos.cloud.controller.pojo.MemberContext;
 
 /**
@@ -102,14 +101,11 @@ public class RuleTasksDelegator {
        return lbClusterId;
     }
 
-    public void delegateTerminate(Partition partition, String clusterId) {
-        log.info("terminate from partition " + partition.getId() + " cluster " 
+ clusterId );
-    }
-
-    public void delegateTerminate(String memberId) {
+    public void delegateTerminate(PartitionContext partitionContext, String 
memberId) {
         try {
             //calling SM to send the instance notification event.
             
InstanceNotificationClient.getInstance().sendMemberCleanupEvent(memberId);
+            
partitionContext.moveActiveMemberToTerminationPendingMembers(memberId);
             //CloudControllerClient.getInstance().terminate(memberId);
         } catch (Throwable e) {
             log.error("Cannot terminate instance", e);

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index e030156..c368ea4 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -134,14 +134,14 @@ public class AutoscalerUtil {
                         if(MemberStatus.Activated.equals(member.getStatus())){
                             partitionContext.addActiveMember(memberContext);
 //                            
networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
-                            
partitionContext.incrementCurrentActiveMemberCount(1);
+//                            
partitionContext.incrementCurrentActiveMemberCount(1);
 
                         } else 
if(MemberStatus.Created.equals(member.getStatus()) || 
MemberStatus.Starting.equals(member.getStatus())){
                             partitionContext.addPendingMember(memberContext);
 
 //                            
networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
                         } else 
if(MemberStatus.Suspended.equals(member.getStatus())){
-                            partitionContext.addFaultyMember(memberId);
+//                            partitionContext.addFaultyMember(memberId);
                         }
                         partitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
                         if(log.isInfoEnabled()){
@@ -238,13 +238,13 @@ public class AutoscalerUtil {
                     if (MemberStatus.Activated.equals(member.getStatus())) {
                         partitionContext.addActiveMember(memberContext);
 //                        
networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
-                        partitionContext.incrementCurrentActiveMemberCount(1);
+//                        
partitionContext.incrementCurrentActiveMemberCount(1);
                     } else if (MemberStatus.Created.equals(member.getStatus()) 
||
                                
MemberStatus.Starting.equals(member.getStatus())) {
                         partitionContext.addPendingMember(memberContext);
 //                        
networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
                     } else if 
(MemberStatus.Suspended.equals(member.getStatus())) {
-                        partitionContext.addFaultyMember(memberId);
+//                        partitionContext.addFaultyMember(memberId);
                     }
 
                     partitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
 
b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
index 79249e4..ecb6c3d 100644
--- 
a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
+++ 
b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/TestMinimumRule.java
@@ -60,7 +60,7 @@ public class TestMinimumRule {
         kbase = KnowledgeBaseFactory.newKnowledgeBase();
         kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
     }
-    
+
     @Test
     public void testMinimumRule() {
         if(kbase == null) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
index dafa12f..5df66bd 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
@@ -67,7 +67,7 @@ public class TopologyManager {
         writeLock.unlock();
     }
 
-    public static synchronized Topology getTopology() {
+    public static Topology getTopology() {
         if (topology == null) {
             synchronized (TopologyManager.class){
                 if (topology == null) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/products/autoscaler/modules/distribution/src/main/conf/scaling.drl
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/distribution/src/main/conf/scaling.drl 
b/products/autoscaler/modules/distribution/src/main/conf/scaling.drl
index 62136c4..7f95170 100644
--- a/products/autoscaler/modules/distribution/src/main/conf/scaling.drl
+++ b/products/autoscaler/modules/distribution/src/main/conf/scaling.drl
@@ -160,7 +160,7 @@ dialect "mvel"
                     log.debug("[scale-down] " + " [partition] " + 
partition.getId() + " [cluster] "
                         + clusterId + " Member with lowest overall load: " + 
selectedMemberStatsContext.getMemberId());
 
-                    
$delegator.delegateTerminate(selectedMemberStatsContext.getMemberId());
+                    $delegator.delegateTerminate(partitionContext, 
selectedMemberStatsContext.getMemberId());
                 }
             }
         }  else{

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/64e500fe/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl
----------------------------------------------------------------------
diff --git 
a/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl 
b/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl
index 7150eca..75c26fc 100644
--- a/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl
+++ b/products/autoscaler/modules/distribution/src/main/conf/terminateall.drl
@@ -37,7 +37,7 @@ dialect "mvel"
             eval(log.debug("[terminate all] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Member id: " + memberId))
 
         then
-           $delegator.delegateTerminate(memberId);
+           $delegator.delegateTerminate($ctxt, memberId);
 end
 
 

Reply via email to