Repository: stratos Updated Branches: refs/heads/master afbf95a04 -> 69978760f
If there are no members in cluster Instances, send cluster Terminated Event while Forceful undeployment Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/69978760 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/69978760 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/69978760 Branch: refs/heads/master Commit: 69978760f198dcca6ff8818fea65778bf71cc355 Parents: afbf95a Author: lasinducharith <[email protected]> Authored: Fri Jun 19 17:11:32 2015 +0530 Committer: lasinducharith <[email protected]> Committed: Fri Jun 19 17:11:32 2015 +0530 ---------------------------------------------------------------------- .../services/impl/AutoscalerServiceImpl.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/69978760/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java index c882f00..795c812 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java @@ -33,6 +33,7 @@ import org.apache.stratos.autoscaler.context.InstanceContext; import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext; import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext; import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext; +import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.exception.*; import org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException; import org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException; @@ -66,6 +67,7 @@ import org.apache.stratos.manager.service.stub.domain.application.signup.Applica import org.apache.stratos.manager.service.stub.domain.application.signup.ArtifactRepository; import org.apache.stratos.messaging.domain.application.Application; import org.apache.stratos.messaging.domain.application.ClusterDataHolder; +import org.apache.stratos.messaging.domain.instance.ClusterInstance; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.messaging.domain.topology.Member; import org.apache.stratos.messaging.message.receiver.application.ApplicationManager; @@ -939,7 +941,6 @@ public class AutoscalerServiceImpl implements AutoscalerService { ApplicationManager.releaseReadLockForApplication(applicationId); } - Set<ClusterDataHolder> allClusters = application.getClusterDataRecursively(); for (ClusterDataHolder clusterDataHolder : allClusters) { String serviceType = clusterDataHolder.getServiceType(); @@ -953,6 +954,23 @@ public class AutoscalerServiceImpl implements AutoscalerService { TopologyManager.releaseReadLockForCluster(serviceType, clusterId); } + //If there are no members in cluster Instance, send cluster Terminated Event + Collection<ClusterInstance> allClusterInstances = cluster.getClusterInstances(); + for (ClusterInstance clusterInstance : allClusterInstances) { + boolean anyMembersInClusterInstance = false; + + for (Member member : cluster.getMembers()) { + if (member.getClusterInstanceId().equals(clusterInstance.getInstanceId())) { + anyMembersInClusterInstance = true; + } + } + + if (anyMembersInClusterInstance == false) { + ClusterStatusEventPublisher.sendClusterTerminatedEvent(applicationId, cluster.getServiceName(), + clusterId, clusterInstance.getInstanceId()); + } + } + List<String> memberListToTerminate = new LinkedList<String>(); for (Member member : cluster.getMembers()) { memberListToTerminate.add(member.getMemberId());
