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 <[email protected]>
Authored: Sat Mar 28 03:21:00 2015 +0530
Committer: Imesh Gunaratne <[email protected]>
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);
         }

Reply via email to