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