Repository: stratos Updated Branches: refs/heads/4.0.0-grouping 148fac56f -> 93b0e165c
using ApplicationHolder instead of ApplicationManager in autoscaler since it is the publisher to applications topic Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/93b0e165 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/93b0e165 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/93b0e165 Branch: refs/heads/4.0.0-grouping Commit: 93b0e165c4ddeb2334025cd5e4eefc3062c530ac Parents: 148fac5 Author: reka <[email protected]> Authored: Mon Nov 3 23:28:30 2014 +0530 Committer: reka <[email protected]> Committed: Mon Nov 3 23:28:30 2014 +0530 ---------------------------------------------------------------------- .../topic/ApplicationsEventPublisher.java | 214 +++++-------------- .../monitor/ApplicationMonitorFactory.java | 7 +- .../status/checker/StatusChecker.java | 43 ++-- 3 files changed, 75 insertions(+), 189 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/93b0e165/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java index 7ca224e..66a35e7 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java @@ -35,98 +35,46 @@ public class ApplicationsEventPublisher { } public static void sendGroupCreatedEvent(String appId, String groupId) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - Group group = application.getGroupRecursively(groupId); - if (group.isStateTransitionValid(GroupStatus.Created)) { - if (log.isInfoEnabled()) { - log.info("Publishing Group created event for [application]: " + appId + - " [group]: " + groupId); - } - GroupResetEvent groupCreatedEvent = - new GroupResetEvent(appId, groupId); - - publishEvent(groupCreatedEvent); - } else { - log.warn("Created is not in the possible state list of [group] " + groupId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Group created event for [application]: " + appId + + " [group]: " + groupId); } + GroupResetEvent groupCreatedEvent = + new GroupResetEvent(appId, groupId); + + publishEvent(groupCreatedEvent); } public static void sendGroupActivatedEvent(String appId, String groupId) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - Group group = application.getGroupRecursively(groupId); - if (group.isStateTransitionValid(GroupStatus.Active)) { - if (log.isInfoEnabled()) { - log.info("Publishing Group activated event for [application]: " + appId + - " [group]: " + groupId); - } - GroupActivatedEvent groupActivatedEvent = - new GroupActivatedEvent(appId, groupId); - - publishEvent(groupActivatedEvent); - } else { - log.warn("Active is not in the possible state list of [group] " + groupId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Group activated event for [application]: " + appId + + " [group]: " + groupId); } + GroupActivatedEvent groupActivatedEvent = + new GroupActivatedEvent(appId, groupId); + + publishEvent(groupActivatedEvent); } public static void sendGroupInActivateEvent(String appId, String groupId) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - Group group = application.getGroupRecursively(groupId); - if (group.isStateTransitionValid(GroupStatus.Inactive)) { - if (log.isInfoEnabled()) { - log.info("Publishing Group in-activate event for [application]: " + appId + - " [group]: " + groupId); - } - AppStatusGroupInactivateEvent appStatusGroupInactivateEvent = new - AppStatusGroupInactivateEvent(appId, groupId); - - publishEvent(appStatusGroupInactivateEvent); - } else { - log.warn("InActive is not in the possible state list of [group] " + groupId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Group in-activate event for [application]: " + appId + + " [group]: " + groupId); } + AppStatusGroupInactivateEvent appStatusGroupInactivateEvent = new + AppStatusGroupInactivateEvent(appId, groupId); + + publishEvent(appStatusGroupInactivateEvent); } public static void sendGroupTerminatingEvent(String appId, String groupId) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - Group group = application.getGroupRecursively(groupId); - if (group.isStateTransitionValid(GroupStatus.Terminating)) { - if (log.isInfoEnabled()) { - log.info("Publishing Group terminating event for [application]: " + appId + - " [group]: " + groupId); - } - GroupTerminatingEvent groupInTerminatingEvent = - new GroupTerminatingEvent(appId, groupId); - publishEvent(groupInTerminatingEvent); - } else { - log.warn("Terminating is not in the possible state list of [group] " + groupId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Group terminating event for [application]: " + appId + + " [group]: " + groupId); } + GroupTerminatingEvent groupInTerminatingEvent = + new GroupTerminatingEvent(appId, groupId); + publishEvent(groupInTerminatingEvent); } public static void sendGroupTerminatedEvent(String appId, String groupId) { @@ -135,111 +83,47 @@ public class ApplicationsEventPublisher { log.info("Publishing Group terminated event for [application]: " + appId + " [group]: " + groupId); } - - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - Group group = application.getGroupRecursively(groupId); - if (group.isStateTransitionValid(GroupStatus.Terminated)) { - GroupTerminatedEvent groupInTerminatedEvent = - new GroupTerminatedEvent(appId, groupId); - publishEvent(groupInTerminatedEvent); - } else { - log.warn("Terminated is not in the possible state list of [group] " + groupId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); - } - - + GroupTerminatedEvent groupInTerminatedEvent = + new GroupTerminatedEvent(appId, groupId); + publishEvent(groupInTerminatedEvent); } public static void sendApplicationActivatedEvent(String appId) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - if (application.isStateTransitionValid(ApplicationStatus.Active)) { - if (log.isInfoEnabled()) { - log.info("Publishing Application activated event for [application]: " + appId); - } - ApplicationActivatedEvent applicationActivatedEvent = - new ApplicationActivatedEvent(appId); - - publishEvent(applicationActivatedEvent); - } else { - log.warn("Active is not in the possible state list of [application] " + appId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Application activated event for [application]: " + appId); } + ApplicationActivatedEvent applicationActivatedEvent = + new ApplicationActivatedEvent(appId); + + publishEvent(applicationActivatedEvent); } public static void sendApplicationInactivatedEvent(String appId) { if (log.isInfoEnabled()) { log.info("Publishing Application In-activated event for [application]: " + appId); } + ApplicationInactivatedEvent applicationInActivatedEvent = + new ApplicationInactivatedEvent(appId); + publishEvent(applicationInActivatedEvent); - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - if (application.isStateTransitionValid(ApplicationStatus.Inactive)) { - ApplicationInactivatedEvent applicationInActivatedEvent = - new ApplicationInactivatedEvent(appId); - publishEvent(applicationInActivatedEvent); - } else { - log.warn("Inactive is not in the possible state list of [application] " + appId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); - } } public static void sendApplicationTerminatingEvent(String appId) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - if (application.isStateTransitionValid(ApplicationStatus.Terminating)) { - if (log.isInfoEnabled()) { - log.info("Publishing Application terminated event for [application]: " + appId); - } - ApplicationTerminatingEvent applicationTerminatingEvent = - new ApplicationTerminatingEvent(appId); - publishEvent(applicationTerminatingEvent); - } else { - log.warn("Terminating is not in the possible state list of [application] " + appId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Application terminated event for [application]: " + appId); } + ApplicationTerminatingEvent applicationTerminatingEvent = + new ApplicationTerminatingEvent(appId); + publishEvent(applicationTerminatingEvent); } public static void sendApplicationTerminatedEvent(String appId, Set<ClusterDataHolder> clusterData) { - try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); - if (application != null) { - if (application.isStateTransitionValid(ApplicationStatus.Terminated)) { - if (log.isInfoEnabled()) { - log.info("Publishing Application terminated event for [application]: " + appId); - } - ApplicationTerminatedEvent applicationTerminatedEvent = - new ApplicationTerminatedEvent(appId, clusterData); - publishEvent(applicationTerminatedEvent); - } else { - log.warn("Terminated is not in the possible state list of [application] " + appId); - } - } - } finally { - ApplicationManager.releaseReadLockForApplication(appId); + if (log.isInfoEnabled()) { + log.info("Publishing Application terminated event for [application]: " + appId); } + ApplicationTerminatedEvent applicationTerminatedEvent = + new ApplicationTerminatedEvent(appId, clusterData); + publishEvent(applicationTerminatedEvent); } public static void publishEvent(Event event) { http://git-wip-us.apache.org/repos/asf/stratos/blob/93b0e165/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java index 225dea1..fbd446e 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java @@ -104,10 +104,11 @@ public class ApplicationMonitorFactory { throws DependencyBuilderException, TopologyInConsistentException { GroupMonitor groupMonitor; - ApplicationManager.acquireReadLockForApplication(appId); + ApplicationHolder.acquireReadLock(); try { - Group group = ApplicationManager.getApplications().getApplication(appId).getGroupRecursively(context.getId()); + Group group = ApplicationHolder.getApplications(). + getApplication(appId).getGroupRecursively(context.getId()); groupMonitor = new GroupMonitor(group, appId); groupMonitor.setAppId(appId); if(parentMonitor != null) { @@ -128,7 +129,7 @@ public class ApplicationMonitorFactory { } } finally { - ApplicationManager.releaseReadLockForApplication(appId); + ApplicationHolder.releaseReadLock(); } return groupMonitor; http://git-wip-us.apache.org/repos/asf/stratos/blob/93b0e165/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java index 3586420..87e4d67 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java @@ -23,14 +23,15 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.NetworkPartitionContext; import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; -import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher; import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor; import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor; import org.apache.stratos.messaging.domain.applications.*; -import org.apache.stratos.messaging.domain.topology.*; -import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager; +import org.apache.stratos.messaging.domain.topology.Cluster; +import org.apache.stratos.messaging.domain.topology.ClusterStatus; +import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; import java.util.Map; @@ -99,8 +100,8 @@ public class StatusChecker { if (cluster != null) { try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); + ApplicationHolder.acquireReadLock(); + Application application = ApplicationHolder.getApplications().getApplication(appId); if (!clusterMonitorHasMembers && cluster.getStatus() == ClusterStatus.Terminating) { if (application.getStatus() == ApplicationStatus.Terminating) { @@ -124,7 +125,7 @@ public class StatusChecker { }*/ } } finally { - ApplicationManager.releaseReadLockForApplication(appId); + ApplicationHolder.releaseReadLock(); } } } @@ -234,22 +235,22 @@ public class StatusChecker { Runnable group = new Runnable() { public void run() { try { - ApplicationManager.acquireReadLockForApplication(appId); + ApplicationHolder.acquireReadLock(); ParentComponent component; if (groupId.equals(appId)) { //it is an application - component = ApplicationManager.getApplications(). + component = ApplicationHolder.getApplications(). getApplication(appId); } else { //it is a group - component = ApplicationManager.getApplications(). + component = ApplicationHolder.getApplications(). getApplication(appId).getGroupRecursively(groupId); } Map<String, ClusterDataHolder> clusterIds = component.getClusterDataMap(); Map<String, Group> groups = component.getAliasToGroupMap(); updateChildStatus(appId, idOfChild, groups, clusterIds, component); } finally { - ApplicationManager.releaseReadLockForApplication(appId); + ApplicationHolder.releaseReadLock(); } @@ -287,12 +288,12 @@ public class StatusChecker { clusterStatus = getClusterStatus(clusterData); groupStatus = getGroupStatus(groups); try { - ApplicationManager.acquireReadLockForApplication(appId); - Application application = ApplicationManager.getApplications().getApplication(appId); + ApplicationHolder.acquireReadLock(); + Application application = ApplicationHolder.getApplications().getApplication(appId); - if (groups.isEmpty() && getAllClusterInSameState(clusterData,ClusterStatus.Active) || + if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active) || clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active) || - getAllClusterInSameState(clusterData,ClusterStatus.Active) && + getAllClusterInSameState(clusterData, ClusterStatus.Active) && getAllGroupInSameState(groups, GroupStatus.Active)) { //send activation event if (parent instanceof Application) { @@ -324,9 +325,9 @@ public class StatusChecker { log.info("sending group created : " + parent.getUniqueIdentifier()); ApplicationBuilder.handleGroupTerminatedEvent(appId, parent.getUniqueIdentifier()); } - } else if (groups.isEmpty() && getAllClusterInSameState(clusterData,ClusterStatus.Created) || + } else if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Created) || clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Created) || - getAllClusterInSameState(clusterData,ClusterStatus.Created) && + getAllClusterInSameState(clusterData, ClusterStatus.Created) && getAllGroupInSameState(groups, GroupStatus.Created)) { if (parent instanceof Application) { log.info("[Application] " + appId + "couldn't change to Created, since it is" + @@ -353,7 +354,7 @@ public class StatusChecker { log.warn("Clusters/groups not found in this [component] " + appId); } } finally { - ApplicationManager.releaseReadLockForApplication(appId); + ApplicationHolder.releaseReadLock(); } @@ -452,7 +453,7 @@ public class StatusChecker { } } - if(groups == null || groups != null && groups.isEmpty()) { + if (groups == null || groups != null && groups.isEmpty()) { groupActive = false; groupTerminated = false; groupCreated = false; @@ -462,7 +463,7 @@ public class StatusChecker { status = GroupStatus.Active; } else if (groupTerminated) { status = GroupStatus.Terminated; - } else if(groupCreated) { + } else if (groupCreated) { status = GroupStatus.Created; } return status; @@ -498,7 +499,7 @@ public class StatusChecker { } } - if(clusterData == null || clusterData != null && clusterData.isEmpty()) { + if (clusterData == null || clusterData != null && clusterData.isEmpty()) { clusterActive = false; clusterTerminated = false; clusterCreated = false; @@ -508,7 +509,7 @@ public class StatusChecker { status = ClusterStatus.Active; } else if (clusterTerminated) { status = ClusterStatus.Terminated; - } else if(clusterCreated) { + } else if (clusterCreated) { status = ClusterStatus.Created; } return status;
