using ApplicationHolder instead of ApplicationManager in autoscaler since it is the publisher to applications topic
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 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 @@
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) {
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 @@
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 @@
}
} finally {
- ApplicationManager.releaseReadLockForApplication(appId);
+ ApplicationHolder.releaseReadLock();
}
return groupMonitor;
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.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 @@
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 @@
}*/
}
} finally {
- ApplicationManager.releaseReadLockForApplication(appId);
+ ApplicationHolder.releaseReadLock();
}
}
}
@@ -234,22 +235,22 @@
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 @@
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 @@
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 @@
log.warn("Clusters/groups not found in this [component] " + appId);
}
} finally {
- ApplicationManager.releaseReadLockForApplication(appId);
+ ApplicationHolder.releaseReadLock();
}
@@ -452,7 +453,7 @@
}
}
- if(groups == null || groups != null && groups.isEmpty()) {
+ if (groups == null || groups != null && groups.isEmpty()) {
groupActive = false;
groupTerminated = false;
groupCreated = false;
@@ -462,7 +463,7 @@
status = GroupStatus.Active;
} else if (groupTerminated) {
status = GroupStatus.Terminated;
- } else if(groupCreated) {
+ } else if (groupCreated) {
status = GroupStatus.Created;
}
return status;
@@ -498,7 +499,7 @@
}
}
- if(clusterData == null || clusterData != null && clusterData.isEmpty()) {
+ if (clusterData == null || clusterData != null && clusterData.isEmpty()) {
clusterActive = false;
clusterTerminated = false;
clusterCreated = false;
@@ -508,7 +509,7 @@
status = ClusterStatus.Active;
} else if (clusterTerminated) {
status = ClusterStatus.Terminated;
- } else if(clusterCreated) {
+ } else if (clusterCreated) {
status = ClusterStatus.Created;
}
return status;