You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2015/05/19 12:01:08 UTC
[1/6] stratos git commit: Fix nw partition casting issue
Repository: stratos
Updated Branches:
refs/heads/master 75d55a0fc -> 70edf3914
Fix nw partition casting issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/70edf391
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/70edf391
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/70edf391
Branch: refs/heads/master
Commit: 70edf39141afa528cd6b518ecc252c1b48d8da5d
Parents: 267cc36
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Tue May 19 15:30:51 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Tue May 19 15:30:57 2015 +0530
----------------------------------------------------------------------
.../autoscaler/applications/topic/ApplicationBuilder.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/70edf391/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 7a4df82..7f781f4 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
@@ -25,6 +25,7 @@ import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext
import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
import org.apache.stratos.autoscaler.client.CloudControllerClient;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.partition.network.ApplicationLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.context.partition.network.GroupLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext;
import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
@@ -652,8 +653,8 @@ public class ApplicationBuilder {
ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
if (applicationMonitor != null) {
- GroupLevelNetworkPartitionContext context = (GroupLevelNetworkPartitionContext) applicationMonitor.
- getNetworkPartitionContext(networkPartitionId);
+ ApplicationLevelNetworkPartitionContext context = (ApplicationLevelNetworkPartitionContext)
+ applicationMonitor.getNetworkPartitionContext(networkPartitionId);
if (status == ApplicationStatus.Active) {
if (log.isDebugEnabled()) {
log.debug("Moving pending [application-instance] " + instanceId +
[4/6] stratos git commit: Fix issue of not setting LB stats in
cluster instance is is not defined
Posted by la...@apache.org.
Fix issue of not setting LB stats in cluster instance is is not defined
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/dcbc80ca
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/dcbc80ca
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/dcbc80ca
Branch: refs/heads/master
Commit: dcbc80ca4a4b8eb9e8f508bc958c904b570baba9
Parents: baed9aa
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Tue May 19 13:16:52 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Tue May 19 15:30:57 2015 +0530
----------------------------------------------------------------------
.../monitor/cluster/ClusterMonitor.java | 23 +++++++++++++-------
1 file changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/dcbc80ca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index a524947..fe55db6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -821,15 +821,17 @@ public class ClusterMonitor extends Monitor {
ClusterLevelNetworkPartitionContext networkPartitionContext = getNetworkPartitionContext(networkPartitionId);
if (null != networkPartitionContext) {
int totalActiveMemberCount = 0;
- for (InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()) {
+ for (InstanceContext clusterInstanceContext :
+ networkPartitionContext.getInstanceIdToInstanceContextMap().values()) {
if (clusterInstanceContext instanceof ClusterInstanceContext) {
totalActiveMemberCount += ((ClusterInstanceContext) clusterInstanceContext).getActiveMemberCount();
}
}
- for (InstanceContext instanceContext : networkPartitionContext.getActiveInstances()) {
+ for (InstanceContext instanceContext : networkPartitionContext.getInstanceIdToInstanceContextMap().values()) {
if (instanceContext instanceof ClusterInstanceContext) {
ClusterInstanceContext clusterInstanceContext = ((ClusterInstanceContext) instanceContext);
- float averageRequestsInFlight = value * clusterInstanceContext.getActiveMemberCount() / totalActiveMemberCount;
+ float averageRequestsInFlight = value * clusterInstanceContext.getActiveMemberCount() /
+ totalActiveMemberCount;
clusterInstanceContext.setAverageRequestsInFlight(averageRequestsInFlight);
log.debug(String.format("Calculated average RIF: [cluster] %s [cluster-instance] %s " +
"[network-partition] %s [average-rif] %s", clusterId,
@@ -874,12 +876,14 @@ public class ClusterMonitor extends Monitor {
ClusterLevelNetworkPartitionContext networkPartitionContext = getNetworkPartitionContext(networkPartitionId);
if (null != networkPartitionContext) {
int totalActiveMemberCount = 0;
- for (InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()) {
+ for (InstanceContext clusterInstanceContext : networkPartitionContext
+ .getInstanceIdToInstanceContextMap().values()) {
if (clusterInstanceContext instanceof ClusterInstanceContext) {
totalActiveMemberCount += ((ClusterInstanceContext) clusterInstanceContext).getActiveMemberCount();
}
}
- for (InstanceContext instanceContext : networkPartitionContext.getActiveInstances()) {
+ for (InstanceContext instanceContext : networkPartitionContext
+ .getInstanceIdToInstanceContextMap().values()) {
if (instanceContext instanceof ClusterInstanceContext) {
ClusterInstanceContext clusterInstanceContext = ((ClusterInstanceContext) instanceContext);
float requestsInFlightGradient = value * clusterInstanceContext.getActiveMemberCount() / totalActiveMemberCount;
@@ -925,15 +929,18 @@ public class ClusterMonitor extends Monitor {
ClusterLevelNetworkPartitionContext networkPartitionContext = getNetworkPartitionContext(networkPartitionId);
if (null != networkPartitionContext) {
int totalActiveMemberCount = 0;
- for (InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()) {
+ for (InstanceContext clusterInstanceContext : networkPartitionContext
+ .getInstanceIdToInstanceContextMap().values()) {
if (clusterInstanceContext instanceof ClusterInstanceContext) {
totalActiveMemberCount += ((ClusterInstanceContext) clusterInstanceContext).getActiveMemberCount();
}
}
- for (InstanceContext instanceContext : networkPartitionContext.getActiveInstances()) {
+ for (InstanceContext instanceContext : networkPartitionContext
+ .getInstanceIdToInstanceContextMap().values()) {
if (instanceContext instanceof ClusterInstanceContext) {
ClusterInstanceContext clusterInstanceContext = ((ClusterInstanceContext) instanceContext);
- float requestsInFlightSecondDerivative = value * clusterInstanceContext.getActiveMemberCount() / totalActiveMemberCount;
+ float requestsInFlightSecondDerivative = value * clusterInstanceContext.getActiveMemberCount() /
+ totalActiveMemberCount;
clusterInstanceContext.setRequestsInFlightSecondDerivative(requestsInFlightSecondDerivative);
log.debug(String.format("Calculated second derivative RIF: [cluster] %s [cluster-instance] %s " +
"[network-partition] %s [average-rif] %s", clusterId,
[6/6] stratos git commit: Update references of Network partition
contexs
Posted by la...@apache.org.
Update references of Network partition contexs
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/080614ca
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/080614ca
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/080614ca
Branch: refs/heads/master
Commit: 080614ca0c20f78285f47702a6b8c9d98f0a9fea
Parents: dcbc80c
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Tue May 19 13:17:41 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Tue May 19 15:30:57 2015 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 5 +-
.../monitor/component/ApplicationMonitor.java | 2 +-
.../monitor/component/GroupMonitor.java | 61 +++++++++++---------
3 files changed, 37 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/080614ca/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 b0315b1..7a4df82 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
@@ -652,7 +652,7 @@ public class ApplicationBuilder {
ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
if (applicationMonitor != null) {
- NetworkPartitionContext context = applicationMonitor.
+ GroupLevelNetworkPartitionContext context = (GroupLevelNetworkPartitionContext) applicationMonitor.
getNetworkPartitionContext(networkPartitionId);
if (status == ApplicationStatus.Active) {
if (log.isDebugEnabled()) {
@@ -693,7 +693,8 @@ public class ApplicationBuilder {
String instanceId, String parentInstanceId) {
GroupMonitor monitor = getGroupMonitor(appId, groupId);
if (monitor != null) {
- NetworkPartitionContext context = monitor.getNetworkPartitionContext(networkPartitionId);
+ GroupLevelNetworkPartitionContext context
+ = (GroupLevelNetworkPartitionContext) monitor.getNetworkPartitionContext(networkPartitionId);
if (status == GroupStatus.Active) {
if (log.isDebugEnabled()) {
log.debug("Moving pending group instance to active list in [group] " + groupId
http://git-wip-us.apache.org/repos/asf/stratos/blob/080614ca/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 f0dfd50..2d5ef12 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
@@ -144,7 +144,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
private void handleScalingMaxOut(InstanceContext instanceContext,
NetworkPartitionContext networkPartitionContext) {
- if (networkPartitionContext.getPendingInstancesCount() == 0) {
+ if (((ApplicationLevelNetworkPartitionContext) networkPartitionContext).getPendingInstancesCount() == 0) {
//handling the application bursting only when there are no pending instances found
try {
if (log.isInfoEnabled()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/080614ca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index a890824..b9f90b4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -155,24 +155,26 @@ public class GroupMonitor extends ParentComponentMonitor {
}
}
- int nonTerminatedInstancesCount = networkPartitionContext.
+ GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+ = (GroupLevelNetworkPartitionContext) networkPartitionContext;
+ int nonTerminatedInstancesCount = groupLevelNetworkPartitionContext.
getNonTerminatedInstancesCount();
- int minInstances = ((GroupLevelNetworkPartitionContext) networkPartitionContext).
+ int minInstances = groupLevelNetworkPartitionContext.
getMinInstanceCount();
- int maxInstances = ((GroupLevelNetworkPartitionContext) networkPartitionContext).
+ int maxInstances = groupLevelNetworkPartitionContext.
getMaxInstanceCount();
- int activeInstances = networkPartitionContext.getActiveInstancesCount();
+ int activeInstances = groupLevelNetworkPartitionContext.getActiveInstancesCount();
if (nonTerminatedInstancesCount < minInstances) {
int instancesToBeCreated = minInstances - nonTerminatedInstancesCount;
for (int i = 0; i < instancesToBeCreated; i++) {
for (InstanceContext parentInstanceContext : parent.
- getNetworkPartitionContext(networkPartitionContext.getId()).
+ getNetworkPartitionContext(groupLevelNetworkPartitionContext.getId()).
getInstanceIdToInstanceContextMap().values()) {
//keep on scale-up/scale-down only if the application is active
ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
getAppMonitor(appId);
- int activeAppInstances = appMonitor.
- getNetworkPartitionContext(networkPartitionContext.getId()).
+ int activeAppInstances = ((GroupLevelNetworkPartitionContext) appMonitor.
+ getNetworkPartitionContext(groupLevelNetworkPartitionContext.getId())).
getActiveInstancesCount();
if (activeAppInstances > 0) {
//Creating new group instance based on the existing parent instances
@@ -245,30 +247,31 @@ public class GroupMonitor extends ParentComponentMonitor {
// if it is a force scale-down
if (allChildrenScaleDown || forceScaleDown) {
if (hasScalingDependents) {
- if (nwPartitionContext.getNonTerminatedInstancesCount() >
- ((GroupLevelNetworkPartitionContext)
- nwPartitionContext).getMinInstanceCount()) {
+ GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+ = (GroupLevelNetworkPartitionContext) nwPartitionContext;
+ if (groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount() >
+ groupLevelNetworkPartitionContext.getMinInstanceCount()) {
//Will scale down based on dependent manner
- float minInstances = ((GroupLevelNetworkPartitionContext)
- nwPartitionContext).getMinInstanceCount();
+ float minInstances = groupLevelNetworkPartitionContext.getMinInstanceCount();
float factor =
- (nwPartitionContext.getNonTerminatedInstancesCount() - 1) / minInstances;
- ScalingEvent scalingEvent = new ScalingEvent(this.id, nwPartitionContext.getId(),
+ (groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount() - 1) / minInstances;
+ ScalingEvent scalingEvent = new ScalingEvent(this.id, groupLevelNetworkPartitionContext.getId(),
instanceContext.getId(), factor);
this.parent.onChildScalingEvent(scalingEvent);
} else {
//Parent has to handle this scale down as by dependent scale down
ScalingDownBeyondMinEvent newScalingDownBeyondMinEvent =
new ScalingDownBeyondMinEvent(this.id,
- nwPartitionContext.getId(), instanceContext.getParentInstanceId());
+ groupLevelNetworkPartitionContext.getId(), instanceContext.getParentInstanceId());
this.parent.onChildScalingDownBeyondMinEvent(newScalingDownBeyondMinEvent);
}
} else {
if (groupScalingEnabled) {
- if (nwPartitionContext.getNonTerminatedInstancesCount() >
- ((GroupLevelNetworkPartitionContext)
- nwPartitionContext).getMinInstanceCount()) {
+ GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+ = (GroupLevelNetworkPartitionContext) nwPartitionContext;
+ if (groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount() >
+ groupLevelNetworkPartitionContext.getMinInstanceCount()) {
//send terminating to the specific group instance in the scale down
ApplicationBuilder.handleGroupTerminatingEvent(this.appId, this.id,
instanceContext.getId());
@@ -295,7 +298,7 @@ public class GroupMonitor extends ParentComponentMonitor {
private void createGroupInstanceOnScaling(final NetworkPartitionContext networkPartitionContext,
final String parentInstanceId) {
if (groupScalingEnabled) {
- if (networkPartitionContext.getPendingInstancesCount() == 0) {
+ if (((GroupLevelNetworkPartitionContext)networkPartitionContext).getPendingInstancesCount() == 0) {
//one of the child is loaded and max out.
// Hence creating new group instance
if (log.isDebugEnabled()) {
@@ -352,10 +355,11 @@ public class GroupMonitor extends ParentComponentMonitor {
log.debug("This [Group] " + id + " [scale-up] dependencies. " +
"Hence notifying the [parent] " + parent.getId());
}
+ GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+ = (GroupLevelNetworkPartitionContext) networkPartitionContext;
//notifying the parent when scale dependents found
- int maxInstances = ((GroupLevelNetworkPartitionContext)
- networkPartitionContext).getMaxInstanceCount();
- if (groupScalingEnabled && maxInstances > networkPartitionContext.
+ int maxInstances = groupLevelNetworkPartitionContext.getMaxInstanceCount();
+ if (groupScalingEnabled && maxInstances > groupLevelNetworkPartitionContext.
getNonTerminatedInstancesCount()) {
//increase group by one more instance and calculate the factor for the group scaling
// and notify parent to scale all the dependent in parallel with this factor
@@ -563,9 +567,10 @@ public class GroupMonitor extends ParentComponentMonitor {
get(networkPartitionId);
float factor = scalingEvent.getFactor();
- int currentInstances = networkPartitionContext.getNonTerminatedInstancesCount();
- float requiredInstances = factor * ((GroupLevelNetworkPartitionContext)
- networkPartitionContext).getMinInstanceCount();
+ GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+ = (GroupLevelNetworkPartitionContext) networkPartitionContext;
+ int currentInstances = groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount();
+ float requiredInstances = factor * groupLevelNetworkPartitionContext.getMinInstanceCount();
int ceilingRequiredInstances = (int) Math.ceil(requiredInstances);
if (ceilingRequiredInstances > currentInstances) {
@@ -580,13 +585,13 @@ public class GroupMonitor extends ParentComponentMonitor {
for (int count = 0; count < instancesToBeTerminated; count++) {
//have to scale down
- if (networkPartitionContext.getPendingInstancesCount() != 0) {
+ if (groupLevelNetworkPartitionContext.getPendingInstancesCount() != 0) {
ApplicationBuilder.handleGroupTerminatingEvent(appId, this.id,
- networkPartitionContext.getPendingInstances().get(0).getId());
+ groupLevelNetworkPartitionContext.getPendingInstances().get(0).getId());
} else {
List<InstanceContext> activeInstances =
- networkPartitionContext.getActiveInstances();
+ groupLevelNetworkPartitionContext.getActiveInstances();
ApplicationBuilder.handleGroupTerminatingEvent(appId, this.id,
activeInstances.get(activeInstances.size() - 1).toString());
}
[2/6] stratos git commit: Cover instance creation logic with try
catch block for catching all the exceptions
Posted by la...@apache.org.
Cover instance creation logic with try catch block for catching all the exceptions
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2a9f21d8
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2a9f21d8
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2a9f21d8
Branch: refs/heads/master
Commit: 2a9f21d8fcb4f568ebb702e957f6e46a21f5578f
Parents: 080614c
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Tue May 19 14:11:26 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Tue May 19 15:30:57 2015 +0530
----------------------------------------------------------------------
.../monitor/component/ApplicationMonitor.java | 121 ++++++++++---------
1 file changed, 64 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2a9f21d8/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 2d5ef12..122a6a7 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
@@ -399,74 +399,81 @@ public class ApplicationMonitor extends ParentComponentMonitor {
*/
private boolean createInstanceAndStartDependency(Application application)
throws TopologyInConsistentException, PolicyValidationException {
+
boolean initialStartup = true;
- List<String> instanceIds = new ArrayList<String>();
- String instanceId;
+ try {
+ List<String> instanceIds = new ArrayList<String>();
+ String instanceId;
- ApplicationPolicy applicationPolicy = PolicyManager.getInstance().
- getApplicationPolicy(application.getApplicationPolicyId());
- if (applicationPolicy == null) {
- String msg = String.format("Application policy not found in registry or " +
- "in-memory [application-id] %s", appId);
- log.error(msg);
- throw new RuntimeException(msg);
- }
+ ApplicationPolicy applicationPolicy = PolicyManager.getInstance().
+ getApplicationPolicy(application.getApplicationPolicyId());
+ if (applicationPolicy == null) {
+ String msg = String.format("Application policy not found in registry or " +
+ "in-memory [application-id] %s", appId);
+ log.error(msg);
+ throw new RuntimeException(msg);
+ }
- NetworkPartitionAlgorithmContext algorithmContext = AutoscalerContext.getInstance().
- getNetworkPartitionAlgorithmContext(appId);
- if (algorithmContext == null) {
- String msg = String.format("Network partition algorithm context not found " +
- "in registry or in-memory [application-id] %s", appId);
- log.error(msg);
- throw new RuntimeException(msg);
- }
+ NetworkPartitionAlgorithmContext algorithmContext = AutoscalerContext.getInstance().
+ getNetworkPartitionAlgorithmContext(appId);
+ if (algorithmContext == null) {
+ String msg = String.format("Network partition algorithm context not found " +
+ "in registry or in-memory [application-id] %s", appId);
+ log.error(msg);
+ throw new RuntimeException(msg);
+ }
- String networkPartitionAlgorithmName = applicationPolicy.getAlgorithm();
- if (log.isDebugEnabled()) {
- String msg = String.format("Network partition algorithm is %s [application-id] %s",
- networkPartitionAlgorithmName, appId);
- log.debug(msg);
- }
+ String networkPartitionAlgorithmName = applicationPolicy.getAlgorithm();
+ if (log.isDebugEnabled()) {
+ String msg = String.format("Network partition algorithm is %s [application-id] %s",
+ networkPartitionAlgorithmName, appId);
+ log.debug(msg);
+ }
- NetworkPartitionAlgorithm algorithm = getNetworkPartitionAlgorithm(
- networkPartitionAlgorithmName);
- if (algorithm == null) {
- String msg = String.format("Couldn't create network partition algorithm " +
- "[application-id] %s", appId);
- log.error(msg);
- throw new RuntimeException(msg);
- }
+ NetworkPartitionAlgorithm algorithm = getNetworkPartitionAlgorithm(
+ networkPartitionAlgorithmName);
+ if (algorithm == null) {
+ String msg = String.format("Couldn't create network partition algorithm " +
+ "[application-id] %s", appId);
+ log.error(msg);
+ throw new RuntimeException(msg);
+ }
- List<String> nextNetworkPartitions = algorithm.getNextNetworkPartitions(algorithmContext);
- if (nextNetworkPartitions == null || nextNetworkPartitions.isEmpty()) {
- String msg = String.format("No network partitions available for application bursting " +
- "[application-id] %s", appId);
- log.warn(msg);
- return false;
- }
+ List<String> nextNetworkPartitions = algorithm.getNextNetworkPartitions(algorithmContext);
+ if (nextNetworkPartitions == null || nextNetworkPartitions.isEmpty()) {
+ String msg = String.format("No network partitions available for application bursting " +
+ "[application-id] %s", appId);
+ log.warn(msg);
+ return false;
+ }
- for (String networkPartitionIds : nextNetworkPartitions) {
- ApplicationLevelNetworkPartitionContext context =
- new ApplicationLevelNetworkPartitionContext(networkPartitionIds);
- //If application instances found in the ApplicationsTopology,
- // then have to add them first before creating new one
- ApplicationInstance appInstance = (ApplicationInstance) application.
- getInstanceByNetworkPartitionId(context.getId());
- if (appInstance != null) {
- //use the existing instance in the Topology to create the data
- instanceId = handleApplicationInstanceCreation(application, context, appInstance);
- initialStartup = false;
- } else {
- //create new app instance as it doesn't exist in the Topology
- instanceId = handleApplicationInstanceCreation(application, context, null);
+ for (String networkPartitionIds : nextNetworkPartitions) {
+ ApplicationLevelNetworkPartitionContext context =
+ new ApplicationLevelNetworkPartitionContext(networkPartitionIds);
+ //If application instances found in the ApplicationsTopology,
+ // then have to add them first before creating new one
+ ApplicationInstance appInstance = (ApplicationInstance) application.
+ getInstanceByNetworkPartitionId(context.getId());
+ if (appInstance != null) {
+ //use the existing instance in the Topology to create the data
+ instanceId = handleApplicationInstanceCreation(application, context, appInstance);
+ initialStartup = false;
+ } else {
+ //create new app instance as it doesn't exist in the Topology
+ instanceId = handleApplicationInstanceCreation(application, context, null);
+ }
+ instanceIds.add(instanceId);
+ log.info("Application instance has been added for the [network partition] " +
+ networkPartitionIds + " [appInstanceId] " + instanceId);
}
- instanceIds.add(instanceId);
- log.info("Application instance has been added for the [network partition] " +
- networkPartitionIds + " [appInstanceId] " + instanceId);
+
+ startDependency(application, instanceIds);
+
+ } catch (Exception e){
+ log.error(String.format("Application instance creation failed [applcaition-id] %s", appId), e);
}
- startDependency(application, instanceIds);
return initialStartup;
}
[5/6] stratos git commit: Fix instance list initilazation issue
Posted by la...@apache.org.
Fix instance list initilazation issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/267cc36e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/267cc36e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/267cc36e
Branch: refs/heads/master
Commit: 267cc36e66269246dbea4b68357710b488e300f0
Parents: 2a9f21d
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Tue May 19 14:12:27 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Tue May 19 15:30:57 2015 +0530
----------------------------------------------------------------------
.../network/ApplicationLevelNetworkPartitionContext.java | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/267cc36e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
index c2a999a..caaeb6d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.context.InstanceContext;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -44,6 +45,9 @@ public class ApplicationLevelNetworkPartitionContext extends NetworkPartitionCon
public ApplicationLevelNetworkPartitionContext(String id) {
super(id);
+ pendingInstances = new ArrayList<InstanceContext>();
+ activeInstances = new ArrayList<InstanceContext>();
+ terminatingPending = new ArrayList<InstanceContext>();
}
public int hashCode() {
[3/6] stratos git commit: Move lists which has group instance status
to GroupLevelNetworkPartitionContext and
ApplicationLevelNetworkPartitionContext
Posted by la...@apache.org.
Move lists which has group instance status to GroupLevelNetworkPartitionContext and ApplicationLevelNetworkPartitionContext
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/baed9aab
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/baed9aab
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/baed9aab
Branch: refs/heads/master
Commit: baed9aabe7b0a26ccb47d1032642d63fd27e5b43
Parents: 75d55a0
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Tue May 19 13:16:01 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Tue May 19 15:30:57 2015 +0530
----------------------------------------------------------------------
...ApplicationLevelNetworkPartitionContext.java | 174 ++++++++++++++++++
.../GroupLevelNetworkPartitionContext.java | 177 ++++++++++++++++++-
.../network/NetworkPartitionContext.java | 173 +-----------------
3 files changed, 351 insertions(+), 173 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/baed9aab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
index 0370ccb..c2a999a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ApplicationLevelNetworkPartitionContext.java
@@ -20,8 +20,11 @@ package org.apache.stratos.autoscaler.context.partition.network;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.context.InstanceContext;
import java.io.Serializable;
+import java.util.Iterator;
+import java.util.List;
/**
* Holds runtime data of a network partition.
@@ -29,6 +32,15 @@ import java.io.Serializable;
public class ApplicationLevelNetworkPartitionContext extends NetworkPartitionContext implements Serializable {
private static final Log log = LogFactory.getLog(ApplicationLevelNetworkPartitionContext.class);
private boolean createdOnBurst;
+ //active instances
+ private List<InstanceContext> activeInstances;
+ //pending instances
+ private List<InstanceContext> pendingInstances;
+ //terminating pending instances
+ private List<InstanceContext> terminatingPending;
+ private String partitionAlgorithm;
+ private int pendingMembersFailureCount = 0;
+
public ApplicationLevelNetworkPartitionContext(String id) {
super(id);
@@ -82,4 +94,166 @@ public class ApplicationLevelNetworkPartitionContext extends NetworkPartitionCon
this.createdOnBurst = createdOnBurst;
}
+
+ public List<InstanceContext> getActiveInstances() {
+ return activeInstances;
+ }
+
+ public void setActiveInstances(List<InstanceContext> activeInstances) {
+ this.activeInstances = activeInstances;
+ }
+
+ public List<InstanceContext> getPendingInstances() {
+ return pendingInstances;
+ }
+
+ public void setPendingInstances(List<InstanceContext> pendingInstances) {
+ this.pendingInstances = pendingInstances;
+ }
+
+ public void addPendingInstance(InstanceContext context) {
+ this.pendingInstances.add(context);
+ }
+
+ public int getPendingInstancesCount() {
+ return this.pendingInstances.size();
+ }
+
+ public int getActiveInstancesCount() {
+ return this.activeInstances.size();
+ }
+
+ public InstanceContext getActiveInstance(String instanceId) {
+ for (InstanceContext instanceContext : activeInstances) {
+ if (instanceId.equals(instanceContext.getId())) {
+ return instanceContext;
+ }
+ }
+ return null;
+ }
+
+ public InstanceContext getPendingInstance(String instanceId) {
+ for (InstanceContext instanceContext : pendingInstances) {
+ if (instanceId.equals(instanceContext.getId())) {
+ return instanceContext;
+ }
+ }
+ return null;
+ }
+
+
+ public void movePendingInstanceToActiveInstances(String instanceId) {
+ if (instanceId == null) {
+ return;
+ }
+ synchronized (pendingInstances) {
+ Iterator<InstanceContext> iterator = pendingInstances.listIterator();
+ while (iterator.hasNext()) {
+ InstanceContext pendingInstance = iterator.next();
+ if (pendingInstance == null) {
+ iterator.remove();
+ continue;
+ }
+ if (instanceId.equals(pendingInstance.getId())) {
+ // member is activated
+ // remove from pending list
+ iterator.remove();
+ // add to the activated list
+ this.activeInstances.add(pendingInstance);
+ pendingMembersFailureCount = 0;
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Pending instance is removed and added to the " +
+ "activated instance list. [Instance Id] %s", instanceId));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public void moveActiveInstanceToTerminationPendingInstances(String instanceId) {
+ if (instanceId == null) {
+ return;
+ }
+ synchronized (activeInstances) {
+ Iterator<InstanceContext> iterator = activeInstances.listIterator();
+ while (iterator.hasNext()) {
+ InstanceContext activeInstance = iterator.next();
+ if (activeInstance == null) {
+ iterator.remove();
+ continue;
+ }
+ if (instanceId.equals(activeInstance.getId())) {
+ // member is activated
+ // remove from pending list
+ iterator.remove();
+ // add to the activated list
+ this.terminatingPending.add(activeInstance);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Active instance is removed and added to the " +
+ "termination pending instance list. [Instance Id] %s", instanceId));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public void movePendingInstanceToTerminationPendingInstances(String instanceId) {
+ if (instanceId == null) {
+ return;
+ }
+ synchronized (pendingInstances) {
+ Iterator<InstanceContext> iterator = pendingInstances.listIterator();
+ while (iterator.hasNext()) {
+ InstanceContext pendingInstance = iterator.next();
+ if (pendingInstance == null) {
+ iterator.remove();
+ continue;
+ }
+ if (instanceId.equals(pendingInstance.getId())) {
+ // member is activated
+ // remove from pending list
+ iterator.remove();
+ // add to the activated list
+ this.terminatingPending.add(pendingInstance);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Pending instance is removed and added to the " +
+ "termination pending instance list. [Instance Id] %s", instanceId));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public int getNonTerminatedInstancesCount() {
+ return this.activeInstances.size() + this.pendingInstances.size();
+ }
+
+ public List<InstanceContext> getTerminatingPending() {
+ return terminatingPending;
+ }
+
+ public void setTerminatingPending(List<InstanceContext> terminatingPending) {
+ this.terminatingPending = terminatingPending;
+ }
+
+ public boolean removeTerminationPendingInstance(String instanceId) {
+ if (id == null) {
+ return false;
+ }
+ synchronized (pendingInstances) {
+ for (Iterator<InstanceContext> iterator = pendingInstances.iterator(); iterator.hasNext(); ) {
+ InstanceContext pendingInstance = iterator.next();
+ if (id.equals(pendingInstance.getId())) {
+ iterator.remove();
+ return true;
+ }
+
+ }
+ }
+ return false;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/baed9aab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/GroupLevelNetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/GroupLevelNetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/GroupLevelNetworkPartitionContext.java
index 6e174ad..85a0236 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/GroupLevelNetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/GroupLevelNetworkPartitionContext.java
@@ -20,10 +20,12 @@ package org.apache.stratos.autoscaler.context.partition.network;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.context.InstanceContext;
import org.apache.stratos.autoscaler.context.partition.GroupLevelPartitionContext;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
/**
@@ -33,11 +35,18 @@ public class GroupLevelNetworkPartitionContext extends NetworkPartitionContext i
private static final Log log = LogFactory.getLog(GroupLevelNetworkPartitionContext.class);
private int scaleDownRequestsCount = 0;
private float averageRequestsServedPerInstance;
+ private int pendingMembersFailureCount = 0;
private int minInstanceCount = 0, maxInstanceCount = 0;
private int requiredInstanceCountBasedOnStats;
private int requiredInstanceCountBasedOnDependencies;
+ //active instances
+ private List<InstanceContext> activeInstances;
+ //pending instances
+ private List<InstanceContext> pendingInstances;
+ //terminating pending instances
+ private List<InstanceContext> terminatingPending;
private String partitionAlgorithm;
//Group level partition contexts
@@ -53,7 +62,9 @@ public class GroupLevelNetworkPartitionContext extends NetworkPartitionContext i
partitionContexts = new ArrayList<GroupLevelPartitionContext>();
requiredInstanceCountBasedOnStats = minInstanceCount;
requiredInstanceCountBasedOnDependencies = minInstanceCount;
-
+ pendingInstances = new ArrayList<InstanceContext>();
+ activeInstances = new ArrayList<InstanceContext>();
+ terminatingPending = new ArrayList<InstanceContext>();
}
@@ -62,6 +73,9 @@ public class GroupLevelNetworkPartitionContext extends NetworkPartitionContext i
partitionContexts = new ArrayList<GroupLevelPartitionContext>();
requiredInstanceCountBasedOnStats = minInstanceCount;
requiredInstanceCountBasedOnDependencies = minInstanceCount;
+ pendingInstances = new ArrayList<InstanceContext>();
+ activeInstances = new ArrayList<InstanceContext>();
+ terminatingPending = new ArrayList<InstanceContext>();
}
@@ -211,5 +225,166 @@ public class GroupLevelNetworkPartitionContext extends NetworkPartitionContext i
return null;
}
+ public List<InstanceContext> getActiveInstances() {
+ return activeInstances;
+ }
+
+ public void setActiveInstances(List<InstanceContext> activeInstances) {
+ this.activeInstances = activeInstances;
+ }
+
+ public List<InstanceContext> getPendingInstances() {
+ return pendingInstances;
+ }
+
+ public void setPendingInstances(List<InstanceContext> pendingInstances) {
+ this.pendingInstances = pendingInstances;
+ }
+
+ public void addPendingInstance(InstanceContext context) {
+ this.pendingInstances.add(context);
+ }
+
+ public int getPendingInstancesCount() {
+ return this.pendingInstances.size();
+ }
+
+ public int getActiveInstancesCount() {
+ return this.activeInstances.size();
+ }
+
+ public InstanceContext getActiveInstance(String instanceId) {
+ for (InstanceContext instanceContext : activeInstances) {
+ if (instanceId.equals(instanceContext.getId())) {
+ return instanceContext;
+ }
+ }
+ return null;
+ }
+
+ public InstanceContext getPendingInstance(String instanceId) {
+ for (InstanceContext instanceContext : pendingInstances) {
+ if (instanceId.equals(instanceContext.getId())) {
+ return instanceContext;
+ }
+ }
+ return null;
+ }
+
+
+ public void movePendingInstanceToActiveInstances(String instanceId) {
+ if (instanceId == null) {
+ return;
+ }
+ synchronized (pendingInstances) {
+ Iterator<InstanceContext> iterator = pendingInstances.listIterator();
+ while (iterator.hasNext()) {
+ InstanceContext pendingInstance = iterator.next();
+ if (pendingInstance == null) {
+ iterator.remove();
+ continue;
+ }
+ if (instanceId.equals(pendingInstance.getId())) {
+ // member is activated
+ // remove from pending list
+ iterator.remove();
+ // add to the activated list
+ this.activeInstances.add(pendingInstance);
+ pendingMembersFailureCount = 0;
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Pending instance is removed and added to the " +
+ "activated instance list. [Instance Id] %s", instanceId));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public void moveActiveInstanceToTerminationPendingInstances(String instanceId) {
+ if (instanceId == null) {
+ return;
+ }
+ synchronized (activeInstances) {
+ Iterator<InstanceContext> iterator = activeInstances.listIterator();
+ while (iterator.hasNext()) {
+ InstanceContext activeInstance = iterator.next();
+ if (activeInstance == null) {
+ iterator.remove();
+ continue;
+ }
+ if (instanceId.equals(activeInstance.getId())) {
+ // member is activated
+ // remove from pending list
+ iterator.remove();
+ // add to the activated list
+ this.terminatingPending.add(activeInstance);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Active instance is removed and added to the " +
+ "termination pending instance list. [Instance Id] %s", instanceId));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public void movePendingInstanceToTerminationPendingInstances(String instanceId) {
+ if (instanceId == null) {
+ return;
+ }
+ synchronized (pendingInstances) {
+ Iterator<InstanceContext> iterator = pendingInstances.listIterator();
+ while (iterator.hasNext()) {
+ InstanceContext pendingInstance = iterator.next();
+ if (pendingInstance == null) {
+ iterator.remove();
+ continue;
+ }
+ if (instanceId.equals(pendingInstance.getId())) {
+ // member is activated
+ // remove from pending list
+ iterator.remove();
+ // add to the activated list
+ this.terminatingPending.add(pendingInstance);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Pending instance is removed and added to the " +
+ "termination pending instance list. [Instance Id] %s", instanceId));
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public int getNonTerminatedInstancesCount() {
+ return this.activeInstances.size() + this.pendingInstances.size();
+ }
+
+ public List<InstanceContext> getTerminatingPending() {
+ return terminatingPending;
+ }
+
+ public void setTerminatingPending(List<InstanceContext> terminatingPending) {
+ this.terminatingPending = terminatingPending;
+ }
+
+ public boolean removeTerminationPendingInstance(String instanceId) {
+ if (id == null) {
+ return false;
+ }
+ synchronized (pendingInstances) {
+ for (Iterator<InstanceContext> iterator = pendingInstances.iterator(); iterator.hasNext(); ) {
+ InstanceContext pendingInstance = iterator.next();
+ if (id.equals(pendingInstance.getId())) {
+ iterator.remove();
+ return true;
+ }
+
+ }
+ }
+ return false;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/baed9aab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
index f7384d6..563c415 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java
@@ -30,23 +30,14 @@ import java.util.*;
public abstract class NetworkPartitionContext {
private static final Log log = LogFactory.getLog(NetworkPartitionContext.class);
//id of the network partition context
- private final String id;
+ protected final String id;
//group instances kept inside a partition
private Map<String, InstanceContext> instanceIdToInstanceContextMap;
- //active instances
- private List<InstanceContext> activeInstances;
- //pending instances
- private List<InstanceContext> pendingInstances;
- //terminating pending instances
- private List<InstanceContext> terminatingPending;
private int pendingMembersFailureCount = 0;
protected NetworkPartitionContext(String id) {
this.id = id;
instanceIdToInstanceContextMap = new HashMap<String, InstanceContext>();
- pendingInstances = new ArrayList<InstanceContext>();
- activeInstances = new ArrayList<InstanceContext>();
- terminatingPending = new ArrayList<InstanceContext>();
}
@@ -78,166 +69,4 @@ public abstract class NetworkPartitionContext {
public boolean containsInstanceContext(String instanceId) {
return this.instanceIdToInstanceContextMap.containsKey(instanceId);
}
-
- public List<InstanceContext> getActiveInstances() {
- return activeInstances;
- }
-
- public void setActiveInstances(List<InstanceContext> activeInstances) {
- this.activeInstances = activeInstances;
- }
-
- public List<InstanceContext> getPendingInstances() {
- return pendingInstances;
- }
-
- public void setPendingInstances(List<InstanceContext> pendingInstances) {
- this.pendingInstances = pendingInstances;
- }
-
- public void addPendingInstance(InstanceContext context) {
- this.pendingInstances.add(context);
- }
-
- public int getPendingInstancesCount() {
- return this.pendingInstances.size();
- }
-
- public int getActiveInstancesCount() {
- return this.activeInstances.size();
- }
-
- public InstanceContext getActiveInstance(String instanceId) {
- for (InstanceContext instanceContext : activeInstances) {
- if (instanceId.equals(instanceContext.getId())) {
- return instanceContext;
- }
- }
- return null;
- }
-
- public InstanceContext getPendingInstance(String instanceId) {
- for (InstanceContext instanceContext : pendingInstances) {
- if (instanceId.equals(instanceContext.getId())) {
- return instanceContext;
- }
- }
- return null;
- }
-
-
- public void movePendingInstanceToActiveInstances(String instanceId) {
- if (instanceId == null) {
- return;
- }
- synchronized (pendingInstances) {
- Iterator<InstanceContext> iterator = pendingInstances.listIterator();
- while (iterator.hasNext()) {
- InstanceContext pendingInstance = iterator.next();
- if (pendingInstance == null) {
- iterator.remove();
- continue;
- }
- if (instanceId.equals(pendingInstance.getId())) {
- // member is activated
- // remove from pending list
- iterator.remove();
- // add to the activated list
- this.activeInstances.add(pendingInstance);
- pendingMembersFailureCount = 0;
- if (log.isDebugEnabled()) {
- log.debug(String.format("Pending instance is removed and added to the " +
- "activated instance list. [Instance Id] %s", instanceId));
- }
- break;
- }
- }
- }
- }
-
- public void moveActiveInstanceToTerminationPendingInstances(String instanceId) {
- if (instanceId == null) {
- return;
- }
- synchronized (activeInstances) {
- Iterator<InstanceContext> iterator = activeInstances.listIterator();
- while (iterator.hasNext()) {
- InstanceContext activeInstance = iterator.next();
- if (activeInstance == null) {
- iterator.remove();
- continue;
- }
- if (instanceId.equals(activeInstance.getId())) {
- // member is activated
- // remove from pending list
- iterator.remove();
- // add to the activated list
- this.terminatingPending.add(activeInstance);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Active instance is removed and added to the " +
- "termination pending instance list. [Instance Id] %s", instanceId));
- }
- break;
- }
- }
- }
- }
-
- public void movePendingInstanceToTerminationPendingInstances(String instanceId) {
- if (instanceId == null) {
- return;
- }
- synchronized (pendingInstances) {
- Iterator<InstanceContext> iterator = pendingInstances.listIterator();
- while (iterator.hasNext()) {
- InstanceContext pendingInstance = iterator.next();
- if (pendingInstance == null) {
- iterator.remove();
- continue;
- }
- if (instanceId.equals(pendingInstance.getId())) {
- // member is activated
- // remove from pending list
- iterator.remove();
- // add to the activated list
- this.terminatingPending.add(pendingInstance);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Pending instance is removed and added to the " +
- "termination pending instance list. [Instance Id] %s", instanceId));
- }
- break;
- }
- }
- }
- }
-
- public int getNonTerminatedInstancesCount() {
- return this.activeInstances.size() + this.pendingInstances.size();
- }
-
- public List<InstanceContext> getTerminatingPending() {
- return terminatingPending;
- }
-
- public void setTerminatingPending(List<InstanceContext> terminatingPending) {
- this.terminatingPending = terminatingPending;
- }
-
- public boolean removeTerminationPendingInstance(String instanceId) {
- if (id == null) {
- return false;
- }
- synchronized (pendingInstances) {
- for (Iterator<InstanceContext> iterator = pendingInstances.iterator(); iterator.hasNext(); ) {
- InstanceContext pendingInstance = iterator.next();
- if (id.equals(pendingInstance.getId())) {
- iterator.remove();
- return true;
- }
-
- }
- }
- return false;
- }
-
}