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 2014/12/04 16:40:07 UTC

stratos git commit: Fixing terminate all and handleClusterStatusEvent handler to use instance id

Repository: stratos
Updated Branches:
  refs/heads/master 73202bcec -> e40d36d13


Fixing terminate all and handleClusterStatusEvent handler to use instance id


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

Branch: refs/heads/master
Commit: e40d36d1378a7a3447f78a0836b01b8a29d7a0f0
Parents: 73202bc
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Thu Dec 4 21:11:43 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Thu Dec 4 21:11:43 2014 +0530

----------------------------------------------------------------------
 .../AutoscalerTopologyEventReceiver.java        |  5 +-
 .../monitor/cluster/AbstractClusterMonitor.java |  6 +--
 .../cluster/KubernetesClusterMonitor.java       |  2 +-
 .../KubernetesServiceClusterMonitor.java        |  5 ++
 .../monitor/cluster/VMClusterMonitor.java       | 56 ++++++++++----------
 .../builder/MonitorStatusEventBuilder.java      |  5 +-
 6 files changed, 42 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/e40d36d1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 50f2430..3d5aa7f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -257,13 +257,14 @@ public class AutoscalerTopologyEventReceiver {
                     return;
                 }
                 //changing the status in the monitor, will notify its parent monitor
-                if (monitor.getStatus() == ClusterStatus.Active) {
+                ClusterInstance clusterInstance = (ClusterInstance)monitor.getInstance(instanceId);
+                if (clusterInstance.getTransitionedStates().pop() == ClusterStatus.Active) {
                     // terminated gracefully
                     monitor.setStatus(ClusterStatus.Terminating, instanceId);
                     InstanceNotificationPublisher.sendInstanceCleanupEventForCluster(clusterId, instanceId);
                 } else {
                     monitor.setStatus(ClusterStatus.Terminating, instanceId);
-                    monitor.terminateAllMembers();
+                    monitor.terminateAllMembers(instanceId, clusterInstance.getNetworkPartitionId());
                 }
                 ServiceReferenceHolder.getInstance().getClusterStatusProcessorChain().
                         process("", clusterId, instanceId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/e40d36d1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
index b094a12..77fdbc9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
@@ -214,7 +214,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
 
     public void setStatus(ClusterStatus status, String instanceId) {
 
-        this.clusterContext.getClusterInstance(instanceId).setStatus(status);
+//        this.clusterContext.getClusterInstance(instanceId).setStatus(status);
         /**
          * notifying the parent monitor about the state change
          * If the cluster in_active and if it is a in_dependent cluster,
@@ -230,7 +230,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
                         "since it is in Terminating State");
 */
         } else {
-            MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, status, this.clusterId);
+            MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, status, this.clusterId, instanceId);
         }
 
 
@@ -374,7 +374,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
         return instanceIdToClusterContextMap.get(instanceId);
     }*/
 
-    public abstract void terminateAllMembers();
+    public abstract void terminateAllMembers(String instanceId, String networkPartitionId);
 
     public boolean isStop() {
         return stop;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e40d36d1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
index 8297e55..b5d6da3 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
@@ -506,7 +506,7 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor {
     }
 
     @Override
-    public void terminateAllMembers() {
+    public void terminateAllMembers(String instanceId, String networkPartitionId) {
         try {
             CloudControllerClient.getInstance().terminateAllContainers(getKubernetesClusterCtxt().getClusterId());
         } catch (TerminationException e) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/e40d36d1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
index e744cb8..edcaa65 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
@@ -218,6 +218,11 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
     }
 
     @Override
+    public void terminateAllMembers(String instanceId, String networkPartitionId) {
+
+    }
+
+    @Override
     public void onChildScalingEvent(MonitorScalingEvent scalingEvent) {
 
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/e40d36d1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index 7e86601..2d086f6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -973,44 +973,42 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
     }
 
     @Override
-    public void terminateAllMembers() {
+    public void terminateAllMembers(final String instanceId, final String networkPartitionId) {
 
         Thread memberTerminator = new Thread(new Runnable() {
             public void run() {
 
-                for (ClusterLevelNetworkPartitionContext networkPartitionContext : getAllNetworkPartitionCtxts().values()) {
-                    for (ClusterInstanceContext instanceContext : networkPartitionContext.getClusterInstanceContextMap().values()) {
-                        for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
-                            //if (log.isDebugEnabled()) {
-                            log.info("Starting to terminate all members in cluster [" + getClusterId() + "] Network Partition [ " +
-                                    networkPartitionContext.getId() + " ], Partition [ " +
-                                    partitionContext.getPartitionId() + " ]");
-                            // }
-                            // need to terminate active, pending and obsolete members
-
-                            // active members
-                            for (MemberContext activeMemberCtxt : partitionContext.getActiveMembers()) {
-                                log.info("Terminating active member [member id] " + activeMemberCtxt.getMemberId());
-                                terminateMember(activeMemberCtxt.getMemberId());
-                            }
+                ClusterInstanceContext instanceContext = getAllNetworkPartitionCtxts().get(networkPartitionId)
+                        .getClusterInstanceContext(instanceId);
+
+                for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
+                    //if (log.isDebugEnabled()) {
+                    log.info("Starting to terminate all members in cluster [" + getClusterId() + "] Network Partition [ " +
+                            instanceContext.getNetworkPartitionId() + " ], Partition [ " +
+                            partitionContext.getPartitionId() + " ]");
+                    // }
+                    // need to terminate active, pending and obsolete members
+
+                    // active members
+                    for (MemberContext activeMemberCtxt : partitionContext.getActiveMembers()) {
+                        log.info("Terminating active member [member id] " + activeMemberCtxt.getMemberId());
+                        terminateMember(activeMemberCtxt.getMemberId());
+                    }
 
-                            // pending members
-                            for (MemberContext pendingMemberCtxt : partitionContext.getPendingMembers()) {
-                                log.info("Terminating pending member [member id] " + pendingMemberCtxt.getMemberId());
-                                terminateMember(pendingMemberCtxt.getMemberId());
-                            }
+                    // pending members
+                    for (MemberContext pendingMemberCtxt : partitionContext.getPendingMembers()) {
+                        log.info("Terminating pending member [member id] " + pendingMemberCtxt.getMemberId());
+                        terminateMember(pendingMemberCtxt.getMemberId());
+                    }
 
-                            // obsolete members
-                            for (String obsoleteMemberId : partitionContext.getObsoletedMembers().keySet()) {
-                                log.info("Terminating obsolete member [member id] " + obsoleteMemberId);
-                                terminateMember(obsoleteMemberId);
-                            }
+                    // obsolete members
+                    for (String obsoleteMemberId : partitionContext.getObsoletedMembers().keySet()) {
+                        log.info("Terminating obsolete member [member id] " + obsoleteMemberId);
+                        terminateMember(obsoleteMemberId);
+                    }
 
 //                terminateAllFactHandle = AutoscalerRuleEvaluator.evaluateTerminateAll
 //                        (terminateAllKnowledgeSession, terminateAllFactHandle, partitionContext);
-                        }
-                    }
-
                 }
             }
         }, "Member Terminator - [cluster id] " + getClusterId());

http://git-wip-us.apache.org/repos/asf/stratos/blob/e40d36d1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
index c2491a0..7c6208f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
@@ -34,8 +34,9 @@ import org.apache.stratos.messaging.domain.applications.GroupStatus;
 public class MonitorStatusEventBuilder {
     private static final Log log = LogFactory.getLog(MonitorStatusEventBuilder.class);
 
-    public static void handleClusterStatusEvent(ParentComponentMonitor parent, ClusterStatus status, String clusterId) {
-        ClusterStatusEvent clusterStatusEvent = new ClusterStatusEvent(status, clusterId, null);
+    public static void handleClusterStatusEvent(ParentComponentMonitor parent, ClusterStatus status, String clusterId,
+                                                String instanceId) {
+        ClusterStatusEvent clusterStatusEvent = new ClusterStatusEvent(status, clusterId, instanceId);
         notifyParent(parent, clusterStatusEvent);
     }