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);
+
                 }
             }
         });

Reply via email to