You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/03/27 22:51:11 UTC

stratos git commit: Set application status to CREATED once application is completely undeployed

Repository: stratos
Updated Branches:
  refs/heads/master 6ad97d03f -> b9ae8ca07


Set application status to CREATED once application is completely undeployed


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

Branch: refs/heads/master
Commit: b9ae8ca07b73a8cbedb9652d472d0f660c975db6
Parents: 6ad97d0
Author: Imesh Gunaratne <im...@apache.org>
Authored: Sat Mar 28 03:21:00 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Sat Mar 28 03:21:00 2015 +0530

----------------------------------------------------------------------
 .../applications/topic/ApplicationBuilder.java  | 45 ++++++++------------
 .../services/impl/AutoscalerServiceImpl.java    | 11 ++---
 2 files changed, 22 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/b9ae8ca0/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 ae34beb..05c6196 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
@@ -38,8 +38,6 @@ import org.apache.stratos.messaging.domain.instance.GroupInstance;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-import org.wso2.carbon.base.MultitenantConstants;
-import org.wso2.carbon.context.PrivilegedCarbonContext;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -256,34 +254,34 @@ public class ApplicationBuilder {
         ApplicationsEventPublisher.sendApplicationDeletedEvent(appId, appClusterDataToSend);
     }
 
-    public static void handleApplicationInstanceTerminatedEvent(String appId, String instanceId) {
+    public static void handleApplicationInstanceTerminatedEvent(String applicationId, String instanceId) {
         if (log.isDebugEnabled()) {
-            log.debug("Handling application terminated event: [application-id] " + appId +
+            log.debug("Handling application terminated event: [application-id] " + applicationId +
                     " [instance] " + instanceId);
         }
 
-        Applications applications = ApplicationHolder.getApplications();
+        Application application = ApplicationHolder.getApplications().getApplication(applicationId);
+        ApplicationContext applicationContext = AutoscalerContext.getInstance().getApplicationContext(applicationId);
 
-        if (!applications.applicationExists(appId)) {
-            log.warn("Application does not exist: [application-id] " + appId);
+        if ((application == null) || (applicationContext == null)) {
+            log.warn("Application does not exist: [application-id] " + applicationId);
         } else {
-            Application application = applications.getApplication(appId);
             ApplicationInstance applicationInstance = application.getInstanceContexts(instanceId);
             ApplicationStatus status = ApplicationStatus.Terminated;
             if (applicationInstance.isStateTransitionValid(status)) {
                 //setting the status, persist and publish
                 applicationInstance.setStatus(status);
-                updateApplicationMonitor(appId, status, applicationInstance.getNetworkPartitionId(),
+                updateApplicationMonitor(applicationId, status, applicationInstance.getNetworkPartitionId(),
                                         instanceId);
                 ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().
-                        getAppMonitor(appId);
+                        getAppMonitor(applicationId);
                 NetworkPartitionContext networkPartitionContext = applicationMonitor.
                         getNetworkPartitionContext(applicationInstance.
                         getNetworkPartitionId());
                 networkPartitionContext.removeInstanceContext(instanceId);
                 applicationMonitor.removeInstance(instanceId);
                 application.removeInstance(instanceId);
-                ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, instanceId);
+                ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(applicationId, instanceId);
 
                 //removing the monitor
                 if (application.getInstanceContextCount() == 0 &&
@@ -295,26 +293,19 @@ public class ApplicationBuilder {
                             monitor1.destroy();
                         }
                     }
-                    //stopping application thread
+                    // stopping application thread
                     applicationMonitor.destroy();
-                    AutoscalerContext.getInstance().removeAppMonitor(appId);
-                    log.info("Application runtime is removed: [application-id] " + appId);
-                    // Removing the application from memory and registry
-                    PrivilegedCarbonContext.startTenantFlow();
-                    try {
-                        PrivilegedCarbonContext.getThreadLocalCarbonContext().
-                                setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
-                        PrivilegedCarbonContext.getThreadLocalCarbonContext().
-                                setTenantId(MultitenantConstants.SUPER_TENANT_ID);
-                    } finally {
-                        PrivilegedCarbonContext.endTenantFlow();
-                    }
-                    //removing the clusters and persisted application
-//                    handleApplicationRemoval(appId);
+                    AutoscalerContext.getInstance().removeAppMonitor(applicationId);
+
+                    // update application status in application context
+                    applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
+                    AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
+
+                    log.info("Application undeployed successfully: [application-id] " + applicationId);
                 }
             } else {
                 log.warn(String.format("Application state transition is not valid: [application-id] %s " +
-                                " [current-status] %s [status-requested] %s", appId,
+                                " [current-status] %s [status-requested] %s", applicationId,
                         application.getInstanceContexts(instanceId).getStatus(),
                         status));
             }

http://git-wip-us.apache.org/repos/asf/stratos/blob/b9ae8ca0/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 39972de..538994a 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
@@ -378,20 +378,17 @@ public class AutoscalerServiceImpl implements AutoscalerService {
 
             // Remove application signup(s) in stratos manager
             removeApplicationSignUp(applicationContext);
-            
+
             // Remove network partition algorithm context
             AutoscalerContext.getInstance().removeNetworkPartitionAlgorithmContext(applicationId);
-            
-            ApplicationBuilder.handleApplicationUnDeployedEvent(applicationId);
 
-            applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
-            AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
+            ApplicationBuilder.handleApplicationUnDeployedEvent(applicationId);
             
             if (log.isInfoEnabled()) {
-                log.info("Application undeployed successfully: [application-id] " + applicationId);
+                log.info("Application undeployment process started: [application-id] " + applicationId);
             }
         } catch (Exception e) {
-            String message = "Could not undeploy application: [application-id] " + applicationId;
+            String message = "Could not start application undeployment process: [application-id] " + applicationId;
             log.error(message, e);
             throw new RuntimeException(message, e);
         }