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 <[email protected]> Authored: Thu Dec 4 21:11:43 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> 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); }
