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;
-    }
-
 }