You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2015/05/11 10:29:21 UTC
[2/4] stratos git commit: fixing app bursting issue and code
refactoring
fixing app bursting issue and code refactoring
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/015e89b7
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/015e89b7
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/015e89b7
Branch: refs/heads/master
Commit: 015e89b7d4c41257aa4d175ad58a1e04eb67910b
Parents: e0ccfe6
Author: reka <rt...@gmail.com>
Authored: Thu May 7 17:08:07 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon May 11 13:58:44 2015 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 89 +++++++++++++++-----
.../topic/ApplicationsEventPublisher.java | 33 +++++---
.../context/cluster/AbstractClusterContext.java | 3 +-
.../monitor/component/ApplicationMonitor.java | 9 +-
.../component/ParentComponentMonitor.java | 2 +-
.../status/processor/StatusProcessor.java | 2 +-
.../cluster/ClusterStatusActiveProcessor.java | 2 +-
.../cluster/ClusterStatusInactiveProcessor.java | 8 +-
.../ClusterStatusTerminatedProcessor.java | 10 +--
.../group/GroupStatusActiveProcessor.java | 25 +++---
.../group/GroupStatusInactiveProcessor.java | 69 +++++++--------
.../processor/group/GroupStatusProcessor.java | 16 ++--
.../group/GroupStatusTerminatedProcessor.java | 14 +--
.../group/GroupStatusTerminatingProcessor.java | 16 ++--
14 files changed, 171 insertions(+), 127 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/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 60de3dd..b5da7a7 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
@@ -255,14 +255,16 @@ public class ApplicationBuilder {
ApplicationsEventPublisher.sendApplicationDeletedEvent(appId, appClusterDataToSend);
}
- public static void handleApplicationInstanceTerminatedEvent(String applicationId, String instanceId) {
+ public static void handleApplicationInstanceTerminatedEvent(String applicationId,
+ String instanceId) {
if (log.isDebugEnabled()) {
log.debug("Handling application terminated event: [application-id] " + applicationId +
" [instance] " + instanceId);
}
Application application = ApplicationHolder.getApplications().getApplication(applicationId);
- ApplicationContext applicationContext = AutoscalerContext.getInstance().getApplicationContext(applicationId);
+ ApplicationContext applicationContext = AutoscalerContext.getInstance().
+ getApplicationContext(applicationId);
if ((application == null) || (applicationContext == null)) {
log.warn("Application does not exist: [application-id] " + applicationId);
@@ -272,7 +274,8 @@ public class ApplicationBuilder {
if (applicationInstance.isStateTransitionValid(status)) {
//setting the status, persist and publish
applicationInstance.setStatus(status);
- updateApplicationMonitor(applicationId, status, applicationInstance.getNetworkPartitionId(),
+ updateApplicationMonitor(applicationId, status,
+ applicationInstance.getNetworkPartitionId(),
instanceId);
ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().
getAppMonitor(applicationId);
@@ -282,14 +285,16 @@ public class ApplicationBuilder {
networkPartitionContext.removeInstanceContext(instanceId);
applicationMonitor.removeInstance(instanceId);
application.removeInstance(instanceId);
- ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(applicationId, instanceId);
+ ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(applicationId,
+ instanceId);
//removing the monitor
if (application.getInstanceContextCount() == 0 &&
applicationMonitor.isTerminating()) {
//Stopping the child threads
if (applicationMonitor.hasMonitors() && applicationMonitor.isTerminating()) {
- for (Monitor monitor1 : applicationMonitor.getAliasToActiveChildMonitorsMap().values()) {
+ for (Monitor monitor1 : applicationMonitor.
+ getAliasToActiveChildMonitorsMap().values()) {
//destroying the drools
monitor1.destroy();
}
@@ -302,7 +307,7 @@ public class ApplicationBuilder {
applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
- log.info("Application undeployed successfully: [application-id] " + applicationId);
+ log.info("Application un-deployed successfully: [application-id] " + applicationId);
}
} else {
log.warn(String.format("Application state transition is not valid: [application-id] %s " +
@@ -338,19 +343,23 @@ public class ApplicationBuilder {
ApplicationHolder.releaseWriteLock();
}
- // if monitors is not found for any cluster, assume cluster is not there and send cluster terminating event.
- // this assumes the cluster monitor will not fail after creating members, but will only fail before
+ // if monitors is not found for any cluster, assume cluster is not there and
+ // send cluster terminating event. This assumes the cluster monitor will
+ // not fail after creating members, but will only fail before
for (ClusterDataHolder aClusterData : clusterData) {
if (AutoscalerContext.getInstance().getClusterMonitor(aClusterData.getClusterId()) == null) {
TopologyManager.acquireReadLockForCluster(aClusterData.getServiceType(),
aClusterData.getClusterId());
try {
- Service service = TopologyManager.getTopology().getService(aClusterData.getServiceType());
+ Service service = TopologyManager.getTopology().
+ getService(aClusterData.getServiceType());
if (service != null) {
Cluster cluster = service.getCluster(aClusterData.getClusterId());
if (cluster != null) {
- for (ClusterInstance instance : cluster.getInstanceIdToInstanceContextMap().values()) {
- ClusterStatusEventPublisher.sendClusterStatusClusterTerminatingEvent(applicationId,
+ for (ClusterInstance instance :
+ cluster.getInstanceIdToInstanceContextMap().values()) {
+ ClusterStatusEventPublisher.
+ sendClusterStatusClusterTerminatingEvent(applicationId,
aClusterData.getServiceType(),
aClusterData.getClusterId(),
instance.getInstanceId());
@@ -368,7 +377,8 @@ public class ApplicationBuilder {
}
- public static void handleGroupInstanceTerminatedEvent(String appId, String groupId, String instanceId) {
+ public static void handleGroupInstanceTerminatedEvent(String appId, String groupId,
+ String instanceId) {
if (log.isDebugEnabled()) {
log.debug("Handling group terminated event: [group-id] " + groupId +
" [application-id] " + appId + " [instance] " + instanceId);
@@ -405,7 +415,8 @@ public class ApplicationBuilder {
if (monitor != null) {
if (monitor.hasMonitors() && applicationMonitor.isTerminating()) {
- for (Monitor monitor1 : monitor.getAliasToActiveChildMonitorsMap().values()) {
+ for (Monitor monitor1 : monitor.
+ getAliasToActiveChildMonitorsMap().values()) {
//destroying the drools
monitor1.destroy();
}
@@ -643,17 +654,33 @@ public class ApplicationBuilder {
NetworkPartitionContext context = applicationMonitor.
getNetworkPartitionContext(networkPartitionId);
if (applicationMonitor != null) {
- if (status == ApplicationStatus.Active) {
+ if(status == ApplicationStatus.Active) {
+ if(log.isDebugEnabled()) {
+ log.debug("Moving pending [application-instance] " + instanceId +
+ " to active list in [application] " + appId);
+ }
context.movePendingInstanceToActiveInstances(instanceId);
- } else if (status == ApplicationStatus.Terminating) {
+ } else if(status == ApplicationStatus.Terminating) {
applicationMonitor.setTerminating(true);
- if (context.getActiveInstance(instanceId) != null) {
+ if(context.getActiveInstance(instanceId) != null) {
+ if(log.isDebugEnabled()) {
+ log.debug("Moving active [application-instance] " + instanceId +
+ " to termination pending list " + "in [application] " + appId);
+ }
context.moveActiveInstanceToTerminationPendingInstances(instanceId);
- } else if (context.getPendingInstance(instanceId) != null) {
+ } else if(context.getPendingInstance(instanceId) != null) {
+ if(log.isDebugEnabled()) {
+ log.debug("Moving pending [application-instance]" + instanceId +
+ " to termination pending list in [application] " + appId);
+ }
context.movePendingInstanceToTerminationPendingInstances(instanceId);
}
- } else if (status == ApplicationStatus.Terminated) {
+ } else if(status == ApplicationStatus.Terminated) {
+ if(log.isDebugEnabled()) {
+ log.debug("Removing termination pending [application-instance] " + instanceId
+ + " [application] " + appId);
+ }
context.removeTerminationPendingInstance(instanceId);
}
applicationMonitor.setStatus(status, instanceId);
@@ -669,15 +696,31 @@ public class ApplicationBuilder {
GroupMonitor monitor = getGroupMonitor(appId, groupId);
if (monitor != null) {
NetworkPartitionContext context = monitor.getNetworkPartitionContext(networkPartitionId);
- if (status == GroupStatus.Active) {
+ if(status == GroupStatus.Active) {
+ if(log.isDebugEnabled()) {
+ log.debug("Moving pending group instance to active list in [group] " + groupId
+ + " [group-instance] " + instanceId);
+ }
context.movePendingInstanceToActiveInstances(instanceId);
- } else if (status == GroupStatus.Terminating) {
- if (context.getActiveInstance(instanceId) != null) {
+ } else if(status == GroupStatus.Terminating) {
+ if(context.getActiveInstance(instanceId) != null) {
+ if(log.isDebugEnabled()) {
+ log.debug("Moving active group instance to termination pending list in " +
+ "[group] " + groupId + " [group-instance] " + instanceId);
+ }
context.moveActiveInstanceToTerminationPendingInstances(instanceId);
- } else if (context.getPendingInstance(instanceId) != null) {
+ } else if(context.getPendingInstance(instanceId) != null) {
+ if(log.isDebugEnabled()) {
+ log.debug("Moving pending group instance to termination pending list in " +
+ "[group] " + groupId + " [group-instance] " + instanceId);
+ }
context.movePendingInstanceToTerminationPendingInstances(instanceId);
}
- } else if (status == GroupStatus.Terminated) {
+ } else if(status == GroupStatus.Terminated) {
+ if(log.isDebugEnabled()) {
+ log.debug("Removing termination pending group instance in " +
+ "[group] " + groupId + " [group-instance] " + instanceId);
+ }
context.removeTerminationPendingInstance(instanceId);
}
monitor.setStatus(status, instanceId, parentInstanceId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/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 bd66cd0..d5c71cf 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
@@ -33,14 +33,15 @@ public class ApplicationsEventPublisher {
publishEvent(new ApplicationDeletedEvent(appId, clusterData));
}
- public static void sendApplicationInstanceCreatedEvent(String appId, ApplicationInstance applicationInstance) {
+ public static void sendApplicationInstanceCreatedEvent(String appId,
+ ApplicationInstance applicationInstance) {
publishEvent(new ApplicationInstanceCreatedEvent(appId, applicationInstance));
}
public static void sendGroupInstanceCreatedEvent(String appId, String groupId,
GroupInstance groupInstance) {
if (log.isInfoEnabled()) {
- log.info("Publishing group created event: [application] " + appId +
+ log.info("Publishing group instance created event: [application] " + appId +
" [group] " + groupId + " [instance] " + groupInstance.getInstanceId());
}
GroupInstanceCreatedEvent groupCreatedEvent =
@@ -48,9 +49,10 @@ public class ApplicationsEventPublisher {
publishEvent(groupCreatedEvent);
}
- public static void sendGroupInstanceActivatedEvent(String appId, String groupId, String instanceId) {
+ public static void sendGroupInstanceActivatedEvent(String appId, String groupId,
+ String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing group activated event: [application] " + appId +
+ log.info("Publishing group instance activated event: [application] " + appId +
" [group] " + groupId + " [instance] " + instanceId);
}
GroupInstanceActivatedEvent groupActivatedEvent =
@@ -58,9 +60,10 @@ public class ApplicationsEventPublisher {
publishEvent(groupActivatedEvent);
}
- public static void sendGroupInstanceInactivateEvent(String appId, String groupId, String instanceId) {
+ public static void sendGroupInstanceInactivateEvent(String appId, String groupId,
+ String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing group inactivate event: [application] " + appId +
+ log.info("Publishing group instance inactivate event: [application] " + appId +
" [group] " + groupId + " [instance] " + instanceId);
}
GroupInstanceInactivatedEvent groupInactivateEvent =
@@ -68,9 +71,10 @@ public class ApplicationsEventPublisher {
publishEvent(groupInactivateEvent);
}
- public static void sendGroupInstanceTerminatingEvent(String appId, String groupId, String instanceId) {
+ public static void sendGroupInstanceTerminatingEvent(String appId, String groupId,
+ String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing group terminating event: [application] " + appId +
+ log.info("Publishing group instance terminating event: [application] " + appId +
" [group] " + groupId + " [instance] " + instanceId);
}
GroupInstanceTerminatingEvent groupInTerminatingEvent =
@@ -78,10 +82,11 @@ public class ApplicationsEventPublisher {
publishEvent(groupInTerminatingEvent);
}
- public static void sendGroupInstanceTerminatedEvent(String appId, String groupId, String instanceId) {
+ public static void sendGroupInstanceTerminatedEvent(String appId, String groupId,
+ String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing group terminated event: [application] " + appId +
+ log.info("Publishing group instance terminated event: [application] " + appId +
" [group] " + groupId + " [instance] " + instanceId);
}
GroupInstanceTerminatedEvent groupInTerminatedEvent =
@@ -91,7 +96,7 @@ public class ApplicationsEventPublisher {
public static void sendApplicationInstanceActivatedEvent(String appId, String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing application active event: [application] " + appId
+ log.info("Publishing application instance active event: [application] " + appId
+ " [instance] " + instanceId);
}
ApplicationInstanceActivatedEvent applicationActivatedEvent =
@@ -102,7 +107,7 @@ public class ApplicationsEventPublisher {
public static void sendApplicationInstanceInactivatedEvent(String appId, String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing application inactivated event: [application] " + appId +
+ log.info("Publishing application instance in-activated event: [application] " + appId +
" [instance] " + instanceId);
}
ApplicationInstanceInactivatedEvent applicationInactivatedEvent =
@@ -113,7 +118,7 @@ public class ApplicationsEventPublisher {
public static void sendApplicationInstanceTerminatingEvent(String appId, String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing application terminating event: [application] " + appId +
+ log.info("Publishing application instance terminating event: [application] " + appId +
" [instance] " + instanceId);
}
ApplicationInstanceTerminatingEvent applicationTerminatingEvent =
@@ -123,7 +128,7 @@ public class ApplicationsEventPublisher {
public static void sendApplicationInstanceTerminatedEvent(String appId, String instanceId) {
if (log.isInfoEnabled()) {
- log.info("Publishing application terminated event: [application] " + appId +
+ log.info("Publishing application instance terminated event: [application] " + appId +
" [instance] " + instanceId);
}
ApplicationInstanceTerminatedEvent applicationTerminatedEvent =
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
index a2d887e..4a1c117 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java
@@ -25,6 +25,7 @@ import org.apache.stratos.messaging.domain.instance.ClusterInstance;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/*
* It holds the runtime data of a service cluster
@@ -43,7 +44,7 @@ public class AbstractClusterContext implements Serializable {
public AbstractClusterContext(String clusterId, String serviceId) {
this.clusterId = clusterId;
this.serviceId = serviceId;
- clusterInstanceMap = new HashMap<String, ClusterInstance>();
+ clusterInstanceMap = new ConcurrentHashMap<String, ClusterInstance>();
}
public String getServiceId() {
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index 314be1e..0228a15 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -471,7 +471,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
}
boolean burstNPFound = false;
- String instanceId = null;
+ List<String> instanceIdList = new ArrayList<String>();
ApplicationPolicy applicationPolicy = PolicyManager.getInstance().
getApplicationPolicy(application.getApplicationPolicyId());
@@ -517,7 +517,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
for (String networkPartitionId : nextNetworkPartitions) {
if (!this.getNetworkPartitionCtxts().containsKey(networkPartitionId)) {
-
+ String instanceId = null;
ApplicationLevelNetworkPartitionContext context = new
ApplicationLevelNetworkPartitionContext(networkPartitionId);
@@ -534,6 +534,9 @@ public class ApplicationMonitor extends ParentComponentMonitor {
"in the ApplicationsTopology. Hence not creating new AppInstance.");
instanceId = handleApplicationInstanceCreation(application, context, appInstance);
}
+ if(instanceId != null) {
+ instanceIdList.add(instanceId);
+ }
burstNPFound = true;
}
}
@@ -541,7 +544,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
if (!burstNPFound) {
log.warn("[Application] " + appId + " cannot be burst as no available resources found");
} else {
- startDependency(application, instanceId);
+ startDependency(application, instanceIdList);
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index 75b18f1..0265501 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -113,7 +113,7 @@ public abstract class ParentComponentMonitor extends Monitor {
// Create the executor service with identifier and thread pool size
executorService = StratosThreadPool.getExecutorService(AutoscalerConstants.AUTOSCALER_THREAD_POOL_ID,
AutoscalerConstants.AUTOSCALER_THREAD_POOL_SIZE);
- networkPartitionCtxts = new HashMap<String, NetworkPartitionContext>();
+ networkPartitionCtxts = new ConcurrentHashMap<String, NetworkPartitionContext>();
}
/**
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusProcessor.java
index 3d0512c..89982c9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusProcessor.java
@@ -19,7 +19,7 @@
package org.apache.stratos.autoscaler.status.processor;
/**
- * Created by reka on 11/25/14.
+ * Abstract class to calculate the status of application/group/cluster
*/
public abstract class StatusProcessor {
/**
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
index eb35f4f..468d172 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
@@ -45,7 +45,7 @@ public class ClusterStatusActiveProcessor extends ClusterStatusProcessor {
if (type == null || (ClusterStatusActiveProcessor.class.getName().equals(type))) {
statusChanged = doProcess(clusterId, instanceId);
if (statusChanged) {
- return statusChanged;
+ return true;
}
} else {
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInactiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInactiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInactiveProcessor.java
index 8383513..ed918e3 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInactiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInactiveProcessor.java
@@ -45,7 +45,7 @@ public class ClusterStatusInactiveProcessor extends ClusterStatusProcessor {
if (type == null || (ClusterStatusInactiveProcessor.class.getName().equals(type))) {
statusChanged = doProcess(clusterId, instanceId);
if (statusChanged) {
- return statusChanged;
+ return true;
}
} else {
@@ -54,15 +54,15 @@ public class ClusterStatusInactiveProcessor extends ClusterStatusProcessor {
return nextProcessor.process(type, clusterId, instanceId);
} else {
- log.warn(String.format("No possible state change found for [type] %s [cluster] %s [instance]",
- type, clusterId, instanceId));
+ log.warn(String.format("No possible state change found for [type] %s [cluster] %s " +
+ "[instance] %s", type, clusterId, instanceId));
}
}
return false;
}
private boolean doProcess(String clusterId, String instanceId) {
- ClusterMonitor monitor = (ClusterMonitor) AutoscalerContext.getInstance().
+ ClusterMonitor monitor = AutoscalerContext.getInstance().
getClusterMonitor(clusterId);
boolean clusterInactive;
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
index 9a6216a..f56a29a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
@@ -50,7 +50,7 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
if (type == null || (ClusterStatusTerminatedProcessor.class.getName().equals(type))) {
statusChanged = doProcess(clusterId, instanceId);
if (statusChanged) {
- return statusChanged;
+ return true;
}
} else {
@@ -118,7 +118,6 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
* @return whether has members or not
*/
private boolean clusterInstanceHasMembers(ClusterMonitor monitor, String instanceId) {
- boolean hasMember = false;
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext :
monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
@@ -130,16 +129,13 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
for (ClusterLevelPartitionContext partitionContext :
clusterInstanceContext.getPartitionCtxts()) {
if (partitionContext.getNonTerminatedMemberCount() > 0) {
- hasMember = true;
- return hasMember;
- } else {
- hasMember = false;
+ return true;
}
}
}
}
}
- return hasMember;
+ return false;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
index 7f824a7..e8c5b0b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
@@ -85,28 +85,25 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
+ if (groups.isEmpty() &&
+ getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
+ clusterData.isEmpty() &&
+ getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) &&
getAllGroupInSameState(groups, GroupStatus.Active, instanceId)) {
- //send activation event
+
if (component instanceof Application) {
//send application activated event
-
- if (log.isInfoEnabled()) {
- log.info(String.format("Sending application active for [application] %s [instance] %s ", appId
- , instanceId));
- }
+ log.info("Sending application instance active for [application] " + appId +
+ " [instance] " + instanceId);
ApplicationBuilder.handleApplicationInstanceActivatedEvent(appId, instanceId);
return true;
} else if (component instanceof Group) {
//send activation to the parent
-
- if (log.isInfoEnabled()) {
- log.info(String.format("Sending group instance active for [group] %s [instance] %s ", component.getUniqueIdentifier()
- , instanceId));
- }
- ApplicationBuilder.handleGroupInstanceActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
+ log.info("Sending group instance active for [group] " +
+ component.getUniqueIdentifier() + " [instance] " + instanceId);
+ ApplicationBuilder.handleGroupInstanceActivatedEvent(appId,
+ component.getUniqueIdentifier(), instanceId);
return true;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInactiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInactiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInactiveProcessor.java
index 8d77230..a69db5a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInactiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInactiveProcessor.java
@@ -26,15 +26,17 @@ import org.apache.stratos.autoscaler.status.processor.StatusProcessor;
import org.apache.stratos.messaging.domain.application.*;
import org.apache.stratos.messaging.domain.instance.ClusterInstance;
import org.apache.stratos.messaging.domain.instance.GroupInstance;
+import org.apache.stratos.messaging.domain.instance.Instance;
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.List;
import java.util.Map;
/**
- * Cluster active status processor
+ * Cluster in-active status processor
*/
public class GroupStatusInactiveProcessor extends GroupStatusProcessor {
private static final Log log = LogFactory.getLog(GroupStatusInactiveProcessor.class);
@@ -50,7 +52,7 @@ public class GroupStatusInactiveProcessor extends GroupStatusProcessor {
boolean statusChanged;
statusChanged = doProcess(idOfComponent, appId, instanceId);
if (statusChanged) {
- return statusChanged;
+ return true;
}
if (nextProcessor != null) {
@@ -91,34 +93,31 @@ public class GroupStatusInactiveProcessor extends GroupStatusProcessor {
if (groups.isEmpty() && getAllClusterInactive(clusterData, instanceId) ||
clusterData.isEmpty() && getAllGroupInactive(groups, instanceId) ||
- getAllClusterInactive(clusterData, instanceId) || getAllGroupInactive(groups, instanceId)) {
- //send the in activation event
+ getAllClusterInactive(clusterData, instanceId) ||
+ getAllGroupInactive(groups, instanceId)) {
+ //send the in-activation event
if (component instanceof Application) {
- //send application activated event
+ //send application in-activated event
log.warn("Sending application instance inactive for [Application] " + appId +
" [ApplicationInstance] " + instanceId);
ApplicationBuilder.handleApplicationInstanceInactivateEvent(appId, instanceId);
return true;
- //ApplicationBuilder.handleApp(appId);
- } else if (component instanceof Group) {
- //send activation to the parent
+ } else {
+ //send group in-activated event
if (((Group) component).getStatus(instanceId) != GroupStatus.Inactive) {
- log.info("sending group instance Inactive for [group] " +
+ log.info("Sending group instance Inactive for [group] " +
component.getUniqueIdentifier() + " [instance] " + instanceId);
- ApplicationBuilder.handleGroupInactivateEvent(appId, component.getUniqueIdentifier(), instanceId);
+ ApplicationBuilder.handleGroupInactivateEvent(appId,
+ component.getUniqueIdentifier(), instanceId);
return true;
}
}
}
-
-
} finally {
ApplicationHolder.releaseWriteLock();
}
-
-
return false;
}
@@ -130,26 +129,20 @@ public class GroupStatusInactiveProcessor extends GroupStatusProcessor {
* @return whether inactive or not
*/
- private boolean getAllClusterInactive(Map<String, ClusterDataHolder> clusterData, String instanceId) {
- boolean clusterStat = false;
+ private boolean getAllClusterInactive(Map<String, ClusterDataHolder> clusterData,
+ String instanceId) {
for (Map.Entry<String, ClusterDataHolder> clusterDataHolderEntry : clusterData.entrySet()) {
- Service service = TopologyManager.getTopology().getService(clusterDataHolderEntry.getValue().getServiceType());
+ Service service = TopologyManager.getTopology().
+ getService(clusterDataHolderEntry.getValue().getServiceType());
Cluster cluster = service.getCluster(clusterDataHolderEntry.getValue().getClusterId());
ClusterInstance context = cluster.getInstanceContexts(instanceId);
if (context != null) {
if (context.getStatus() == ClusterStatus.Inactive) {
- clusterStat = true;
- return clusterStat;
- } else {
- clusterStat = false;
-
+ return true;
}
- } else {
- clusterStat = false;
}
-
}
- return clusterStat;
+ return false;
}
@@ -160,21 +153,29 @@ public class GroupStatusInactiveProcessor extends GroupStatusProcessor {
* @return whether inactive or not
*/
private boolean getAllGroupInactive(Map<String, Group> groups, String instanceId) {
- boolean groupStat = false;
for (Group group : groups.values()) {
GroupInstance context = group.getInstanceContexts(instanceId);
if (context != null) {
if (context.getStatus() == GroupStatus.Inactive) {
- groupStat = true;
- return groupStat;
- } else {
- groupStat = false;
+ return true;
}
- //TODO get by parent
} else {
- groupStat = false;
+ List<Instance> instanceList = group.getInstanceContextsWithParentId(instanceId);
+ //if no instances found and requested status is terminated,
+ // then considering this group as terminated
+ if (instanceList != null && !instanceList.isEmpty()) {
+ int sameStateInstances = 0;
+ for (Instance context1 : instanceList) {
+ if (((GroupInstance) context1).getStatus().equals(GroupStatus.Inactive)) {
+ sameStateInstances++;
+ }
+ }
+ if (sameStateInstances >= 1) {
+ return true;
+ }
+ }
}
}
- return groupStat;
+ return false;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessor.java
index bdf8f7e..d14bcbd 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessor.java
@@ -65,15 +65,14 @@ public abstract class GroupStatusProcessor extends StatusProcessor {
if (context.getStatus() == status) {
groupStat = true;
} else {
- groupStat = false;
- return groupStat;
+ return false;
}
} else {
//Checking the minimum of the group instances to be satisfied
List<Instance> contexts = group.getInstanceContextsWithParentId(instanceId);
//if no instances found and requested status is terminated,
// then considering this group as terminated
- if (context == null && contexts.isEmpty() && status == GroupStatus.Terminated) {
+ if (contexts == null || contexts.isEmpty() && status == GroupStatus.Terminated) {
groupStat = true;
} else {
int minGroupInstances = group.getGroupMinInstances();
@@ -86,12 +85,9 @@ public abstract class GroupStatusProcessor extends StatusProcessor {
if (sameStateInstances >= minGroupInstances) {
groupStat = true;
} else {
- groupStat = false;
- return groupStat;
+ return false;
}
}
-
-
}
}
return groupStat;
@@ -123,16 +119,14 @@ public abstract class GroupStatusProcessor extends StatusProcessor {
if (context.getStatus() == status) {
clusterStat = true;
} else {
- clusterStat = false;
- return clusterStat;
+ return false;
}
} else {
//Checking whether non-existent context is for a terminated state change
if (status == ClusterStatus.Terminated) {
clusterStat = true;
} else {
- clusterStat = false;
- return clusterStat;
+ return false;
}
}
} finally {
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
index 133feaa..8cade3c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
@@ -29,7 +29,7 @@ import org.apache.stratos.messaging.domain.topology.ClusterStatus;
import java.util.Map;
/**
- * Cluster active status processor
+ * Cluster Terminated status processor
*/
public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
private static final Log log = LogFactory.getLog(GroupStatusTerminatedProcessor.class);
@@ -86,18 +86,20 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId) ||
+ if (groups.isEmpty() &&
+ getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) ||
+ clusterData.isEmpty() &&
+ getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId) ||
getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) &&
getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId)) {
//send the terminated event
if (component instanceof Application) {
- log.info("sending application terminated for [application] " + appId + " [instance] "
- + instanceId);
+ log.info("Sending application instance terminated for [application] " + appId
+ + " [instance] " + instanceId);
ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
return true;
} else if (component instanceof Group) {
- log.info("sending group instance terminated for [group] " +
+ log.info("Sending group instance terminated for [group] " +
component.getUniqueIdentifier() + " [instance] " + instanceId);
ApplicationBuilder.handleGroupInstanceTerminatedEvent(appId,
component.getUniqueIdentifier(), instanceId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/015e89b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
index d3a29ae..fd83833 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
@@ -29,7 +29,7 @@ import org.apache.stratos.messaging.domain.topology.ClusterStatus;
import java.util.Map;
/**
- * Cluster active status processor
+ * Cluster terminating status processor
*/
public class GroupStatusTerminatingProcessor extends GroupStatusProcessor {
private static final Log log = LogFactory.getLog(GroupStatusTerminatingProcessor.class);
@@ -86,19 +86,21 @@ public class GroupStatusTerminatingProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId) ||
+ if (groups.isEmpty() &&
+ getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) ||
+ clusterData.isEmpty() &&
+ getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId) ||
getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) &&
getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId)) {
- //send the terminated event
+ //send the terminating event
if (component instanceof Application) {
- log.info("sending app terminating for [application] " + appId + " and for " +
- " [instance] " + instanceId);
+ log.info("Sending application instance terminating for [application] "
+ + appId + " and for " + " [instance] " + instanceId);
ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
return true;
} else if (component instanceof Group) {
//send activation to the parent
- log.info("sending group terminating for [group] " +
+ log.info("Sending group terminating for [group] " +
component.getUniqueIdentifier() + " and for [instance] "
+ instanceId);
ApplicationBuilder.handleGroupTerminatingEvent(appId,