Repository: stratos Updated Branches: refs/heads/docker-grouping-merge f0303b050 -> 7db5adf0d
adding cluster monitor destroying and fixing un-deployment of application Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7db5adf0 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7db5adf0 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7db5adf0 Branch: refs/heads/docker-grouping-merge Commit: 7db5adf0d0866feaa1ed63055aa7cdca65c33389 Parents: f0303b0 Author: reka <[email protected]> Authored: Tue Nov 4 14:50:25 2014 +0530 Committer: reka <[email protected]> Committed: Tue Nov 4 14:50:54 2014 +0530 ---------------------------------------------------------------------- .../applications/topic/ApplicationBuilder.java | 81 +++++++------------- .../topic/ApplicationsEventPublisher.java | 4 +- .../AutoscalerTopologyEventReceiver.java | 23 +----- 3 files changed, 33 insertions(+), 75 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/7db5adf0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java index 696fa39..ed7e643 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java @@ -191,14 +191,29 @@ public class ApplicationBuilder { } public static void handleApplicationUndeployed(String applicationId) { + log.info("Un-deploying the [application] " + applicationId + "by marking it as terminating.."); - Applications applications = ApplicationHolder.getApplications(); + ApplicationHolder.acquireReadLock(); + try { + ApplicationMonitor appMonitor = AutoscalerContext.getInstance(). + getAppMonitor(applicationId); - ApplicationHolder.acquireWriteLock(); - Application applicationToRemove = applications.getApplication(applicationId); - Set<ClusterDataHolder> clusterData = null; + if (appMonitor != null) { + // update the status as Terminating + appMonitor.setStatus(ApplicationStatus.Terminating); - try { + } else { + log.warn("Application Monitor cannot be found for the undeployed [application] " + + applicationId); + } + + } finally { + ApplicationHolder.releaseReadLock(); + + } + /*Set<ClusterDataHolder> clusterData = null; + + try { if (applicationToRemove != null) { clusterData = applicationToRemove.getClusterDataRecursively(); ApplicationHolder.removeApplication(applicationId); @@ -208,9 +223,9 @@ public class ApplicationBuilder { } finally { ApplicationHolder.releaseWriteLock(); - } + }*/ - ApplicationsEventPublisher.sendApplicationUndeployedEvent(applicationId, clusterData); + ApplicationsEventPublisher.sendApplicationTerminatingEvent(applicationId); } public static void handleGroupTerminatedEvent(String appId, String groupId) { @@ -512,8 +527,6 @@ public class ApplicationBuilder { if (!applications.applicationExists(appId)) { log.warn("Application with id [ " + appId + " ] doesn't exist in Applications"); - //ApplicationsEventPublisher.sendApplicationRemovedEvent(applicationId, tenantId, tenantDomain); - } else { Application application = applications.getApplication(appId); @@ -523,51 +536,11 @@ public class ApplicationBuilder { // forcefully set status for now application.setStatus(ApplicationStatus.Terminated); updateApplicationMonitor(appId, ApplicationStatus.Terminated); - - int tenantId = application.getTenantId(); - String tenantDomain = application.getTenantDomain(); - Set<ClusterDataHolder> clusterData = application.getClusterDataRecursively(); - // remove clusters - /*for (ClusterDataHolder clusterDataHolder : clusterData) { - Service service = applications.getService(clusterDataHolder.getServiceType()); - if (service != null) { - // remove Cluster - service.removeCluster(clusterDataHolder.getClusterId()); - - if (log.isDebugEnabled()) { - log.debug("Removed cluster with id " + clusterDataHolder.getClusterId()); - } - } else { - log.warn("Unable to remove cluster with cluster id: " + clusterDataHolder.getClusterId() + " from Applications, " + - " associated Service [ " + clusterDataHolder.getServiceType() + " ] npt found"); - } - - // remove runtime data - FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance(); - dataHolder.removeClusterContext(clusterDataHolder.getClusterId()); - if (log.isDebugEnabled()) { - log.debug("Removed Cluster Context for Cluster id: " + clusterDataHolder.getClusterId()); - } - - try { - RegistryManager.getInstance().persist(dataHolder); - } catch (RegistryException e) { - log.error("Unable to persist data in Registry", e); - } - } - - - // remove application - applications.removeApplication(event.getAppId()); - ApplicationHolder.persistApplication(applications); - - deleteAppResourcesFromMetadataService(event); - - log.info("Removed application [ " + event.getAppId() + " ] from Applications"); - - ApplicationsEventPublisher.sendApplicationTerminatedEvent(new org.apache.stratos.messaging.event.applications.ApplicationTerminatedEvent(event.getAppId(), - clusterData, tenantId, tenantDomain))*/ - ; + //removing the monitor + AutoscalerContext.getInstance().removeAppMonitor(appId); + //Removing the application from memory and registry + ApplicationHolder.removeApplication(appId); + ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId); } } finally { http://git-wip-us.apache.org/repos/asf/stratos/blob/7db5adf0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java index 66a35e7..5cc87e5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java @@ -117,12 +117,12 @@ public class ApplicationsEventPublisher { publishEvent(applicationTerminatingEvent); } - public static void sendApplicationTerminatedEvent(String appId, Set<ClusterDataHolder> clusterData) { + public static void sendApplicationTerminatedEvent(String appId) { if (log.isInfoEnabled()) { log.info("Publishing Application terminated event for [application]: " + appId); } ApplicationTerminatedEvent applicationTerminatedEvent = - new ApplicationTerminatedEvent(appId, clusterData); + new ApplicationTerminatedEvent(appId, null); publishEvent(applicationTerminatedEvent); } http://git-wip-us.apache.org/repos/asf/stratos/blob/7db5adf0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java index 6a6a48e..c22f3b8 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java @@ -24,10 +24,8 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.NetworkPartitionContext; import org.apache.stratos.autoscaler.applications.ApplicationHolder; -import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher; import org.apache.stratos.autoscaler.exception.DependencyBuilderException; import org.apache.stratos.autoscaler.exception.TopologyInConsistentException; -import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.grouping.topic.InstanceNotificationPublisher; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory; @@ -35,7 +33,6 @@ import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor; import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; import org.apache.stratos.messaging.domain.applications.Application; -import org.apache.stratos.messaging.domain.applications.ApplicationStatus; import org.apache.stratos.messaging.domain.applications.Applications; import org.apache.stratos.messaging.domain.applications.ClusterDataHolder; import org.apache.stratos.messaging.domain.topology.ClusterStatus; @@ -43,28 +40,12 @@ import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.domain.topology.Topology; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.topology.*; -import org.apache.stratos.messaging.listener.applications.ApplicationUndeployedEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterActivatedEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterCreatedEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterInActivateEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterRemovedEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterResetEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterTerminatedEventListener; -import org.apache.stratos.messaging.listener.topology.ClusterTerminatingEventListener; -import org.apache.stratos.messaging.listener.topology.CompleteTopologyEventListener; -import org.apache.stratos.messaging.listener.topology.MemberActivatedEventListener; -import org.apache.stratos.messaging.listener.topology.MemberMaintenanceListener; -import org.apache.stratos.messaging.listener.topology.MemberReadyToShutdownEventListener; -import org.apache.stratos.messaging.listener.topology.MemberStartedEventListener; -import org.apache.stratos.messaging.listener.topology.MemberTerminatedEventListener; import org.apache.stratos.messaging.listener.topology.*; import org.apache.stratos.messaging.message.receiver.topology.TopologyEventReceiver; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; import org.drools.runtime.StatefulKnowledgeSession; import org.drools.runtime.rule.FactHandle; -import java.util.Set; - /** * Autoscaler topology receiver. */ @@ -310,6 +291,10 @@ public class AutoscalerTopologyEventReceiver implements Runnable { //changing the status in the monitor, will notify its parent monitor if (clusterMonitor != null) { clusterMonitor.setStatus(ClusterStatus.Terminated); + //Destroying and Removing the Cluster monitor + clusterMonitor.destroy(); + AutoscalerContext.getInstance().removeClusterMonitor(clusterId); + } } });
