Repository: stratos Updated Branches: refs/heads/docker-grouping-merge 02a65b3d2 -> 48797b786
updating monitor and application with the same status when updating as terminating Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/48797b78 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/48797b78 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/48797b78 Branch: refs/heads/docker-grouping-merge Commit: 48797b78636b2c7add8b0c7e8befe82ec9202057 Parents: 7f93181 Author: reka <[email protected]> Authored: Sun Nov 9 12:57:34 2014 +0530 Committer: reka <[email protected]> Committed: Sun Nov 9 12:58:47 2014 +0530 ---------------------------------------------------------------------- .../applications/topic/ApplicationBuilder.java | 215 ++++++++++--------- 1 file changed, 111 insertions(+), 104 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/48797b78/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 89762c2..d3c4c6f 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 @@ -24,10 +24,7 @@ import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext; import org.apache.stratos.autoscaler.client.CloudControllerClient; -import org.apache.stratos.autoscaler.exception.DependencyBuilderException; -import org.apache.stratos.autoscaler.exception.TopologyInConsistentException; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; -import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory; import org.apache.stratos.autoscaler.monitor.group.GroupMonitor; import org.apache.stratos.messaging.domain.applications.*; @@ -92,47 +89,57 @@ public class ApplicationBuilder { /*try { ApplicationHolder.acquireWriteLock();*/ - ApplicationStatus status = ApplicationStatus.Active; - if (application.isStateTransitionValid(status)) { - log.info(String.format("Updating application status: [application-id] %s [status] %s", appId, status)); - application.setStatus(status); - updateApplicationMonitor(appId, status); - ApplicationHolder.persistApplication(application); - //publishing data - ApplicationsEventPublisher.sendApplicationActivatedEvent(appId); - } else { - log.warn(String.format("Application state transition is not valid: [application-id] %s " + - " [current-status] %s [status-requested] %s", appId, application.getStatus(), status)); - } + ApplicationStatus status = ApplicationStatus.Active; + if (application.isStateTransitionValid(status)) { + log.info(String.format("Updating application status: [application-id] %s [status] %s", appId, status)); + application.setStatus(status); + updateApplicationMonitor(appId, status); + ApplicationHolder.persistApplication(application); + //publishing data + ApplicationsEventPublisher.sendApplicationActivatedEvent(appId); + } else { + log.warn(String.format("Application state transition is not valid: [application-id] %s " + + " [current-status] %s [status-requested] %s", appId, application.getStatus(), status)); + } /*} finally { ApplicationHolder.releaseWriteLock(); }*/ } - public static void handleApplicationUndeployed(String applicationId) { + public static void handleApplicationUndeployed(String appId) { if (log.isInfoEnabled()) { - log.info("Handling application un-deployed event: [application-id] " + applicationId); + log.info("Handling application terminating event: [application-id] " + appId); + } + + Applications applications = ApplicationHolder.getApplications(); + Application application = applications.getApplication(appId); + //update the status of the Group + if (application == null) { + log.warn(String.format("Application does not exist: [application-id] %s", + appId)); + return; } - ApplicationHolder.acquireReadLock(); try { - ApplicationMonitor appMonitor = AutoscalerContext.getInstance(). - getAppMonitor(applicationId); - if (appMonitor != null) { - // update the status as Terminating - log.info(String.format("Updating application status: [application-id] %s [status] %s", - applicationId, ApplicationStatus.Terminating)); - appMonitor.setStatus(ApplicationStatus.Terminating); + ApplicationHolder.acquireWriteLock(); + ApplicationStatus status = ApplicationStatus.Terminating; + if (application.isStateTransitionValid(status)) { + log.info(String.format("Updating application status: " + + "[application-id] %s [status] %s", appId, status)); + application.setStatus(status); + updateApplicationMonitor(appId, status); + ApplicationHolder.persistApplication(application); + //publishing data + ApplicationsEventPublisher.sendApplicationActivatedEvent(appId); } else { - log.warn("Application monitor cannot be found: [application-id] " - + applicationId); + log.warn(String.format("Application state transition is not valid: [application-id] %s " + + " [current-status] %s [status-requested] %s", appId, application.getStatus(), status)); } } finally { - ApplicationHolder.releaseReadLock(); - + ApplicationHolder.releaseWriteLock(); } - ApplicationsEventPublisher.sendApplicationTerminatingEvent(applicationId); + ApplicationsEventPublisher.sendApplicationTerminatingEvent(appId); } public static void handleApplicationTerminatedEvent(String appId) { @@ -144,29 +151,29 @@ public class ApplicationBuilder { /*try { ApplicationHolder.acquireWriteLock();*/ - if (!applications.applicationExists(appId)) { - log.warn("Application does not exist: [application-id] " + appId); + if (!applications.applicationExists(appId)) { + log.warn("Application does not exist: [application-id] " + appId); + } else { + Application application = applications.getApplication(appId); + + ApplicationStatus status = ApplicationStatus.Terminated; + if (application.isStateTransitionValid(status)) { + // forcefully set status for now + log.info(String.format("Updating application status: [application-id] %s [status] %s", + appId, status)); + application.setStatus(status); + updateApplicationMonitor(appId, status); + //removing the monitor + AutoscalerContext.getInstance().removeAppMonitor(appId); + //Removing the application from memory and registry + ApplicationHolder.removeApplication(appId); + log.info("Application is removed: [application-id] " + appId); + ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId); } else { - Application application = applications.getApplication(appId); - - ApplicationStatus status = ApplicationStatus.Terminated; - if (application.isStateTransitionValid(status)) { - // forcefully set status for now - log.info(String.format("Updating application status: [application-id] %s [status] %s", - appId, status)); - application.setStatus(status); - updateApplicationMonitor(appId, status); - //removing the monitor - AutoscalerContext.getInstance().removeAppMonitor(appId); - //Removing the application from memory and registry - ApplicationHolder.removeApplication(appId); - log.info("Application is removed: [application-id] " + appId); - ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId); - } else { - log.warn(String.format("Application state transition is not valid: [application-id] %s " + - " [current-status] %s [status-requested] %s", appId, application.getStatus(), status)); - } + log.warn(String.format("Application state transition is not valid: [application-id] %s " + + " [current-status] %s [status-requested] %s", appId, application.getStatus(), status)); } + } /*} finally { ApplicationHolder.releaseWriteLock(); @@ -230,19 +237,19 @@ public class ApplicationBuilder { /*try { ApplicationHolder.acquireWriteLock();*/ - GroupStatus status = GroupStatus.Terminated; - if (group.isStateTransitionValid(status)) { - log.info(String.format("Updating group status: [group-id] %s [status] %s", groupId, status)); - group.setStatus(status); - //updating the groupMonitor - updateGroupMonitor(appId, groupId, status); - //publishing data - ApplicationsEventPublisher.sendGroupTerminatedEvent(appId, groupId); - } else { - log.warn(String.format("Group state transition is not valid: [group-id] %s [current-status] %s " + - " [requested-status] %s", groupId, group.getStatus(), status)); - } - ApplicationHolder.persistApplication(application); + GroupStatus status = GroupStatus.Terminated; + if (group.isStateTransitionValid(status)) { + log.info(String.format("Updating group status: [group-id] %s [status] %s", groupId, status)); + group.setStatus(status); + //updating the groupMonitor + updateGroupMonitor(appId, groupId, status); + //publishing data + ApplicationsEventPublisher.sendGroupTerminatedEvent(appId, groupId); + } else { + log.warn(String.format("Group state transition is not valid: [group-id] %s [current-status] %s " + + " [requested-status] %s", groupId, group.getStatus(), status)); + } + ApplicationHolder.persistApplication(application); /*} finally { ApplicationHolder.releaseWriteLock(); }*/ @@ -272,19 +279,19 @@ public class ApplicationBuilder { /*try { ApplicationHolder.acquireWriteLock();*/ - GroupStatus status = GroupStatus.Active; - if (group.isStateTransitionValid(status)) { - log.info(String.format("Updating group status: [group-id] %s [status] %s", groupId, status)); - group.setStatus(status); - //updating the groupMonitor - updateGroupMonitor(appId, groupId, status); - //publishing data - ApplicationsEventPublisher.sendGroupActivatedEvent(appId, groupId); - } else { - log.warn(String.format("Group state transition is not valid: [group-id] %s [current-status] %s " + - " [requested-status] %s", groupId, group.getStatus(), status)); - } - ApplicationHolder.persistApplication(application); + GroupStatus status = GroupStatus.Active; + if (group.isStateTransitionValid(status)) { + log.info(String.format("Updating group status: [group-id] %s [status] %s", groupId, status)); + group.setStatus(status); + //updating the groupMonitor + updateGroupMonitor(appId, groupId, status); + //publishing data + ApplicationsEventPublisher.sendGroupActivatedEvent(appId, groupId); + } else { + log.warn(String.format("Group state transition is not valid: [group-id] %s [current-status] %s " + + " [requested-status] %s", groupId, group.getStatus(), status)); + } + ApplicationHolder.persistApplication(application); /*} finally { ApplicationHolder.releaseWriteLock(); }*/ @@ -314,19 +321,19 @@ public class ApplicationBuilder { /*try { ApplicationHolder.acquireWriteLock();*/ - GroupStatus status = GroupStatus.Created; - if (group.isStateTransitionValid(status)) { - log.info("Updating group status: [group-id] " + group.getUniqueIdentifier() + " [status] " + status); - group.setStatus(status); - //updating the groupMonitor - updateGroupMonitor(appId, groupId, status); - //publishing data - ApplicationsEventPublisher.sendGroupCreatedEvent(appId, groupId); - } else { - log.warn("Group state transition is not valid: [group-id] " + groupId + " [current-state] " + group.getStatus() - + "[requested-state] " + status); - } - ApplicationHolder.persistApplication(application); + GroupStatus status = GroupStatus.Created; + if (group.isStateTransitionValid(status)) { + log.info("Updating group status: [group-id] " + group.getUniqueIdentifier() + " [status] " + status); + group.setStatus(status); + //updating the groupMonitor + updateGroupMonitor(appId, groupId, status); + //publishing data + ApplicationsEventPublisher.sendGroupCreatedEvent(appId, groupId); + } else { + log.warn("Group state transition is not valid: [group-id] " + groupId + " [current-state] " + group.getStatus() + + "[requested-state] " + status); + } + ApplicationHolder.persistApplication(application); /*} finally { ApplicationHolder.releaseWriteLock(); }*/ @@ -357,19 +364,19 @@ public class ApplicationBuilder { /*try { ApplicationHolder.acquireWriteLock();*/ - GroupStatus status = GroupStatus.Inactive; - if (group.isStateTransitionValid(status)) { - log.info("Updating group state: [group-id] " + groupId + " [status] " + status); - group.setStatus(status); - //updating the groupMonitor - updateGroupMonitor(appId, groupId, status); - //publishing data - ApplicationsEventPublisher.sendGroupInActivateEvent(appId, groupId); - } else { - log.warn("Group state transition is not valid: [group-id] " + groupId + " [current-state] " + group.getStatus() - + "[requested-state] " + status); - } - ApplicationHolder.persistApplication(application); + GroupStatus status = GroupStatus.Inactive; + if (group.isStateTransitionValid(status)) { + log.info("Updating group state: [group-id] " + groupId + " [status] " + status); + group.setStatus(status); + //updating the groupMonitor + updateGroupMonitor(appId, groupId, status); + //publishing data + ApplicationsEventPublisher.sendGroupInActivateEvent(appId, groupId); + } else { + log.warn("Group state transition is not valid: [group-id] " + groupId + " [current-state] " + group.getStatus() + + "[requested-state] " + status); + } + ApplicationHolder.persistApplication(application); /*} finally { ApplicationHolder.releaseWriteLock(); }*/ @@ -409,7 +416,7 @@ public class ApplicationBuilder { ApplicationsEventPublisher.sendGroupTerminatingEvent(appId, groupId); } else { log.warn("Group state transition is not valid: [group-id] " + groupId + " [current-state] " + group.getStatus() - + "[requested-state] " + status); + + "[requested-state] " + status); } ApplicationHolder.persistApplication(application); } finally {
