You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/03/11 19:57:12 UTC

git commit: fixing STRATOS-494

Repository: incubator-stratos
Updated Branches:
  refs/heads/master 8d4cf7cca -> 9694fa2bb


fixing STRATOS-494


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

Branch: refs/heads/master
Commit: 9694fa2bb607063b3781a2a061a1936bf7ea860b
Parents: 8d4cf7c
Author: rekathiru <rt...@gmail.com>
Authored: Tue Mar 11 14:56:58 2014 -0400
Committer: rekathiru <rt...@gmail.com>
Committed: Tue Mar 11 14:56:58 2014 -0400

----------------------------------------------------------------------
 .../stratos/autoscaler/PartitionContext.java    | 20 ++++++++---------
 .../topology/AutoscalerTopologyReceiver.java    | 23 ++++++++++----------
 2 files changed, 21 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9694fa2b/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 7fcfa93..d9189dc 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
@@ -170,8 +170,7 @@ public class PartitionContext implements Serializable{
     	if (id == null) {
             return false;
         }
-
-    	for (Iterator<MemberContext> iterator = pendingMembers.iterator(); iterator.hasNext();) {
+        for (Iterator<MemberContext> iterator = pendingMembers.iterator(); iterator.hasNext();) {
     		MemberContext pendingMember = (MemberContext) iterator.next();
     		if(id.equals(pendingMember.getMemberId())){
     			iterator.remove();
@@ -247,10 +246,10 @@ public class PartitionContext implements Serializable{
 
     public boolean removeTerminationPendingMember(String memberId) {
         boolean terminationPendingMemberAvailable = false;
-        for (MemberContext memberContext: activeMembers){
+        for (MemberContext memberContext: terminationPendingMembers){
             if(memberContext.getMemberId().equals(memberId)){
-                terminationPendingMemberAvailable =true;
-                activeMembers.remove(memberContext);
+                terminationPendingMemberAvailable = true;
+                terminationPendingMembers.remove(memberContext);
                 break;
             }
         }
@@ -357,23 +356,24 @@ public class PartitionContext implements Serializable{
     }
 
     public int getNonTerminatedMemberCount() {
-        return activeMembers.size() + pendingMembers.size();
+        return activeMembers.size() + pendingMembers.size() + terminationPendingMembers.size();
     }
 
-    public void removeActiveMemberById(String memberId) {
-
+    public boolean removeActiveMemberById(String memberId) {
+        boolean removeActiveMember = false;
         synchronized (activeMembers) {
             Iterator<MemberContext> iterator = activeMembers.listIterator();
             while (iterator.hasNext()) {
                 MemberContext memberContext = iterator.next();
-
                 if(memberId.equals(memberContext.getMemberId())){
-
                     iterator.remove();
+                    removeActiveMember = true;
+
                     break;
                 }
             }
         }
+        return removeActiveMember;
     }
 
     public boolean activeMemberExist(String memberId) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9694fa2b/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 fae2307..d526717 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
@@ -223,10 +223,8 @@ public class AutoscalerTopologyReceiver implements Runnable {
                 AbstractMonitor monitor;
 
                 if(AutoscalerContext.getInstance().moniterExist(clusterId)){
-
                     monitor = AutoscalerContext.getInstance().getMonitor(clusterId);
                 } else {
-
                     //This is LB member
                     monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
                 }
@@ -236,19 +234,20 @@ public class AutoscalerTopologyReceiver implements Runnable {
                 PartitionContext partitionContext = networkPartitionContext.getPartitionCtxt(partitionId);
                 String memberId = e.getMemberId();
 				partitionContext.removeMemberStatsContext(memberId);
-                
-                if(partitionContext.removePendingMember(memberId)) {
-                	if(log.isDebugEnabled()){
-                        log.debug(String.format("Member is removed from pending list: [member] %s", memberId));
-                    }
-                }
-                
-                if(!partitionContext.removeTerminationPendingMember(memberId)){
 
+                if(partitionContext.removeTerminationPendingMember(memberId)){
+                    if(log.isDebugEnabled()){
+                        log.debug(String.format("Member is removed from termination pending members list: [member] %s", memberId));
+                    }
+                } else if(partitionContext.removePendingMember(memberId)) {
                     if(log.isDebugEnabled()){
-                        log.debug(String.format("Member is not available in termination pending list: [member] %s", memberId));
+                        log.debug(String.format("Member is removed from pending members list: [member] %s", memberId));
                     }
-                } 
+                } else if(partitionContext.removeActiveMemberById(memberId)){
+                    log.warn(String.format("Member is in the wrong list and it is removed from active members list", memberId));
+                } else {
+                    log.warn(String.format("Member is not available in any of the list active, pending and termination pending", memberId));
+                }
                 
                 if(log.isInfoEnabled()){
                     log.info(String.format("Member stat context has been removed successfully: [member] %s", memberId));