Add member status handling logic for suspended, maintenance, terminated, and ready to shutdown status
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/55e49d0f Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/55e49d0f Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/55e49d0f Branch: refs/heads/master Commit: 55e49d0f8c9da460c0d706f0d5719ead63e86138 Parents: af6ade4 Author: Lahiru Sandaruwan <[email protected]> Authored: Thu Jun 11 15:42:13 2015 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Thu Jun 11 15:42:13 2015 +0530 ---------------------------------------------------------------------- .../context/cluster/ClusterContext.java | 54 +++++++++++++++----- .../partition/ClusterLevelPartitionContext.java | 4 ++ 2 files changed, 46 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/55e49d0f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java index edf37c7..f7f2fc6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java @@ -355,34 +355,64 @@ public class ClusterContext extends AbstractClusterContext { memberContext.setPartition(AutoscalerObjectConverter.convertPartitionToCCPartition(partition)); memberContext.setProperties(AutoscalerUtil.toStubProperties(member.getProperties())); - if (MemberStatus.Active.equals(member.getStatus())) { + if (MemberStatus.Active.equals(member.getStatus()) || MemberStatus.Suspended.equals(member.getStatus())) { clusterLevelPartitionContext.addActiveMember(memberContext); if (log.isDebugEnabled()) { - String msg = String.format("Active member read from topology and added " + + String msg = String.format("Active or suspended member read from topology and added " + "to active member list: [application] %s [cluster] %s " + "[clusterInstanceContext] %s [partitionContext] %s [member-id] %s", cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, clusterLevelPartitionContext.getPartitionId(), member.toString()); log.debug(msg); } - } else if (MemberStatus.Created.equals(member.getStatus()) || - MemberStatus.Starting.equals(member.getStatus())) { + + clusterLevelPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); + if (log.isInfoEnabled()) { + log.info(String.format("Member stat context has been added: [application] %s " + + "[cluster] %s [clusterInstanceContext] %s [partitionContext] %s [member-id] %s", + cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, + clusterLevelPartitionContext.getPartitionId(), memberId)); + } + } else if (MemberStatus.Created.equals(member.getStatus()) + || MemberStatus.Starting.equals(member.getStatus())) { clusterLevelPartitionContext.addPendingMember(memberContext); if (log.isDebugEnabled()) { - String msg = String.format("Pending member read from topology and added to " + + String msg = String.format("Created or starting member read from topology and added to " + "pending member list: [application] %s [cluster] %s " + "[clusterInstanceContext] %s [partitionContext] %s [member-id] %s", cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, clusterLevelPartitionContext.getPartitionId(), member.toString()); log.debug(msg); } - } - clusterLevelPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); - if (log.isInfoEnabled()) { - log.info(String.format("Member stat context has been added: [application] %s " + - "[cluster] %s [clusterInstanceContext] %s [partitionContext] %s [member-id] %s", - cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, - clusterLevelPartitionContext.getPartitionId(), memberId)); + } else if (MemberStatus.In_Maintenance.equals(member.getStatus())) { + clusterLevelPartitionContext.addTerminationPendingMember(memberContext); + if (log.isDebugEnabled()) { + String msg = String.format("In maintenance member is read from topology " + + "and added to termination pending member list: [application] %s [cluster] %s " + + "[clusterInstanceContext] %s [partitionContext] %s [member-id] %s", + cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, + clusterLevelPartitionContext.getPartitionId(), member.toString()); + log.debug(msg); + } + } else if (MemberStatus.ReadyToShutDown.equals(member.getStatus())) { + clusterLevelPartitionContext.addObsoleteMember(memberContext); + if (log.isDebugEnabled()) { + String msg = String.format("Ready to shutdown member is read from topology " + + "and added to obsolete member list: [application] %s [cluster] %s " + + "[clusterInstanceContext] %s [partitionContext] %s [member-id] %s", + cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, + clusterLevelPartitionContext.getPartitionId(), member.toString()); + log.debug(msg); + } + } else if (MemberStatus.Terminated.equals(member.getStatus())) { + if (log.isDebugEnabled()) { + String msg = String.format("Terminated member is read from topology ignored without adding to " + + "Autoscaler contexts: [application] %s [cluster] %s [clusterInstanceContext] %s" + + " [partitionContext] %s [member-id] %s", + cluster.getAppId(), cluster.getClusterId(), ClusterInstanceId, + clusterLevelPartitionContext.getPartitionId(), member.toString()); + log.debug(msg); + } } } } http://git-wip-us.apache.org/repos/asf/stratos/blob/55e49d0f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java index 6a050fa..41a5627 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java @@ -186,6 +186,10 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se this.pendingMembers.add(ctxt); } + public void addTerminationPendingMember(MemberContext ctxt) { + this.terminationPendingMembers.add(ctxt); + } + public boolean removePendingMember(String id) { if (id == null) { return false;
