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