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{
