Updated Branches:
  refs/heads/master d7015680e -> bb68f2399

remove the pending member, once the member is activated.


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

Branch: refs/heads/master
Commit: 6842209f1583cefa6cb482dfd5d195dc9483a7f0
Parents: fcf1dc7
Author: Nirmal Fernando <[email protected]>
Authored: Tue Dec 3 22:52:27 2013 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Tue Dec 3 22:52:27 2013 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/PartitionContext.java    | 27 ++++++++++++++++++--
 .../processors/AutoscalerTopologyReceiver.java  |  7 +++--
 2 files changed, 30 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6842209f/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 3ff6c01..741e509 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
@@ -119,8 +119,30 @@ public class PartitionContext {
         this.pendingMembers.add(ctxt);
     }
     
-    public void removePendingMember(MemberContext ctxt) {
-        this.pendingMembers.remove(ctxt);
+    public void removePendingMember(String memberId) {
+        if (memberId == null) {
+            return;
+        }
+        for (Iterator<MemberContext> iterator = pendingMembers.listIterator(); 
+                iterator.hasNext();) {
+            MemberContext pendingMember = (MemberContext) iterator.next();
+            if(pendingMember == null) {
+                iterator.remove();
+                continue;
+            }
+            if(memberId.equals(pendingMember.getMemberId())){
+                // member is activated
+                // remove from pending list
+                iterator.remove();
+                // 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);
+                }
+                break;
+            }
+        }
     }
     
     public void addActiveMember(MemberContext ctxt) {
@@ -168,6 +190,7 @@ public class PartitionContext {
             while (true) {
                 long expiryTime = ctxt.getExpiryTime();
                 List<MemberContext> pendingMembers = ctxt.getPendingMembers();
+                
                 synchronized (pendingMembers) {
 
                     for (Iterator<MemberContext> iterator = 
pendingMembers.listIterator(); iterator.hasNext();) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6842209f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
index 7a2601b..9a9588c 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java
@@ -183,9 +183,12 @@ public class AutoscalerTopologyReceiver implements 
Runnable {
                                        MemberActivatedEvent e = 
(MemberActivatedEvent)event;
                                        ClusterMonitor monitor = 
AutoscalerRuleEvaluator.getInstance().getMonitor(e.getClusterId());
                                        ClusterContext clusCtx = 
monitor.getClusterCtxt();
-                                       
clusCtx.addMemberpartition(e.getMemberId(), e.getPartitionId());
-                                       PartitionContext partCtxt = 
monitor.getPartitionCtxt(e.getPartitionId());
+                                       String memberId = e.getMemberId();
+                    String partitionId = e.getPartitionId();
+                    clusCtx.addMemberpartition(memberId, partitionId);
+                                       PartitionContext partCtxt = 
monitor.getPartitionCtxt(partitionId);
                                        partCtxt.incrementCurrentMemberCount(1);
+                                       partCtxt.removePendingMember(memberId);
                                        
                                }
                 finally{

Reply via email to