You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2015/06/11 12:48:24 UTC

[3/3] stratos git commit: Add member status handling logic for suspended, maintenance, terminated, and ready to shutdown status

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 <la...@apache.org>
Authored: Thu Jun 11 15:42:13 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
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;