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:10 UTC
[3/6] stratos git commit: Move lists which has group instance status
to GroupLevelNetworkPartitionContext and
ApplicationLevelNetworkPartitionContext
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;
- }
-
}