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 2013/12/25 11:18:35 UTC
[1/2] git commit: Fixing instance count at algrithms and some other
places
Updated Branches:
refs/heads/master c03a42a6e -> 096398a5d
Fixing instance count at algrithms and some other places
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/02bc1fd0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/02bc1fd0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/02bc1fd0
Branch: refs/heads/master
Commit: 02bc1fd0c042b4c182cbf8b823c84804c2ce5fbd
Parents: 4cd05fe
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Wed Dec 25 15:49:08 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Wed Dec 25 15:49:08 2013 +0530
----------------------------------------------------------------------
.../autoscaler/NetworkPartitionContext.java | 78 ++++++++++----------
.../stratos/autoscaler/PartitionContext.java | 14 ++--
.../autoscaler/algorithm/OneAfterAnother.java | 14 ++--
.../autoscaler/algorithm/RoundRobin.java | 25 +++----
.../topology/AutoscalerTopologyReceiver.java | 10 ++-
.../stratos/autoscaler/util/AutoscalerUtil.java | 10 ++-
.../distribution/src/main/conf/mincheck.drl | 2 +-
7 files changed, 81 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
index 61b2351..defb7db 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
@@ -59,7 +59,7 @@ public class NetworkPartitionContext implements Serializable{
//details required for partition selection algorithms
private int currentPartitionIndex;
- private Map<String, Integer> partitionToMemberCountMap;
+// private Map<String, Integer> partitionToMemberCountMap;
//partitions of this network partition
private Map<String, PartitionContext> partitionCtxts;
@@ -70,7 +70,7 @@ public class NetworkPartitionContext implements Serializable{
this.id = id;
this.setServiceToLBClusterId(new HashMap<String, String>());
this.setClusterIdToLBClusterIdMap(new HashMap<String, String>());
- partitionToMemberCountMap = new HashMap<String, Integer>();
+// partitionToMemberCountMap = new HashMap<String, Integer>();
partitionCtxts = new HashMap<String, PartitionContext>();
}
@@ -288,35 +288,39 @@ public class NetworkPartitionContext implements Serializable{
this.id = id;
}
- public void increaseMemberCountInPartitionBy(String partitionId, int count){
- if(!partitionCountExists(partitionId)){
- addPartitionCount(partitionId, 1);
- } else{
- partitionToMemberCountMap.put(partitionId, getMemberCount(partitionId) + count);
- }
- }
-
- public void decreaseMemberCountInPartitionBy(String partitionId, int count){
-
- partitionToMemberCountMap.put(partitionId, getMemberCount(partitionId) - count);
- }
-
- public void addPartitionCount(String partitionId, int count){
- partitionToMemberCountMap.put(partitionId, count);
- }
-
- public void removePartitionCount(String partitionId){
-
- partitionToMemberCountMap.remove(partitionId);
- }
-
- public boolean partitionCountExists(String partitionId){
- return partitionToMemberCountMap.containsKey(partitionId);
- }
-
- public int getMemberCount(String partitionId){
- if(partitionToMemberCountMap.containsKey(partitionId)) {
- return partitionToMemberCountMap.get(partitionId);
+// public void increaseMemberCountOfPartition(String partitionId, int count){
+// if(!partitionCountExists(partitionId)){
+// addPartitionCount(partitionId, 1);
+// } else{
+// partitionToMemberCountMap.put(partitionId, getMemberCountOfPartition(partitionId) + count);
+// }
+// }
+
+// public void decreaseMemberCountOfPartition(String partitionId, int count){
+//
+// partitionToMemberCountMap.put(partitionId, getMemberCountOfPartition(partitionId) - count);
+// }
+//
+// public void addPartitionCount(String partitionId, int count){
+// partitionToMemberCountMap.put(partitionId, count);
+// }
+//
+// public void removePartitionCount(String partitionId){
+//
+// partitionToMemberCountMap.remove(partitionId);
+// }
+
+// public boolean partitionCountExists(String partitionId){
+// return partitionToMemberCountMap.containsKey(partitionId);
+// }
+
+ public int getMemberCountOfPartition(String partitionId){
+// if(partitionToMemberCountMap.containsKey(partitionId)) {
+// return partitionToMemberCountMap.get(partitionId);
+// }
+// return 0;
+ if(partitionCtxts.containsKey(partitionId)){
+ return getPartitionCtxt(partitionId).getTotalMemberCount();
}
return 0;
}
@@ -351,13 +355,13 @@ public class NetworkPartitionContext implements Serializable{
public void setPartitions(Partition[] partitions) {
this.partitions = partitions;
- for (Partition partition: partitions){
- partitionToMemberCountMap.put(partition.getId(), 0);
- }
+// for (Partition partition: partitions){
+// partitionToMemberCountMap.put(partition.getId(), 0);
+// }
}
- public void setPartitionToMemberCountMap(Map<String, Integer> partitionToMemberCountMap) {
- this.partitionToMemberCountMap = partitionToMemberCountMap;
- }
+// public void setPartitionToMemberCountMap(Map<String, Integer> partitionToMemberCountMap) {
+// this.partitionToMemberCountMap = partitionToMemberCountMap;
+// }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
index 4d298a0..a9fa739 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
@@ -48,7 +48,7 @@ public class PartitionContext implements Serializable{
private String serviceName;
private String networkPartitionId;
private Partition partition;
- private int currentMemberCount = 0;
+ private int currentActiveMemberCount = 0;
private int minimumMemberCount = 0;
// properties
@@ -109,18 +109,18 @@ public class PartitionContext implements Serializable{
public void setPartitionId(String partitionId) {
this.partitionId = partitionId;
}
- public int getCurrentMemberCount() {
+ public int getTotalMemberCount() {
// live count + pending count
- return currentMemberCount + pendingMembers.size();
+ return currentActiveMemberCount + pendingMembers.size();
}
- public void incrementCurrentMemberCount(int count) {
+ public void incrementCurrentActiveMemberCount(int count) {
- this.currentMemberCount += count;
+ this.currentActiveMemberCount += count;
}
- public void decrementCurrentMemberCount(int count) {
- this.currentMemberCount -= count;
+ public void decrementCurrentActiveMemberCount(int count) {
+ this.currentActiveMemberCount -= count;
}
public int getMinimumMemberCount() {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
index b933d17..a187900 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
@@ -57,13 +57,13 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
Partition currentPartition = (Partition) partitions.get(currentPartitionIndex);
String currentPartitionId = currentPartition.getId();
- if (networkPartitionContext.partitionCountExists(currentPartitionId)) {
- networkPartitionContext.addPartitionCount(currentPartitionId, 0);
- }
+// if (networkPartitionContext.partitionCountExists(currentPartitionId)) {
+// networkPartitionContext.addPartitionCount(currentPartitionId, 0);
+// }
- if (networkPartitionContext.getMemberCount(currentPartitionId) < currentPartition.getPartitionMax()) {
+ if (networkPartitionContext.getMemberCountOfPartition(currentPartitionId) < currentPartition.getPartitionMax()) {
// current partition is free
- networkPartitionContext.increaseMemberCountInPartitionBy(currentPartitionId, 1);
+// networkPartitionContext.increaseMemberCountOfPartition(currentPartitionId, 1);
if (log.isDebugEnabled())
log.debug("Free space found in partition " + currentPartition.getId());
@@ -100,9 +100,9 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
String currentPartitionId = currentPartition.getId();
// has more than minimum instances.
- if (networkPartitionContext.getMemberCount(currentPartitionId) > currentPartition.getPartitionMin()) {
+ if (networkPartitionContext.getMemberCountOfPartition(currentPartitionId) > currentPartition.getPartitionMin()) {
// current partition is free
- networkPartitionContext.decreaseMemberCountInPartitionBy(currentPartitionId, 1);
+// networkPartitionContext.decreaseMemberCountOfPartition(currentPartitionId, 1);
if (log.isDebugEnabled())
log.debug("A free space found for scale down in partition" +
currentPartition.getId());
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
index 55a3178..74d9eda 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
@@ -21,7 +21,6 @@ package org.apache.stratos.autoscaler.algorithm;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.AutoscalerContext;
import org.apache.stratos.autoscaler.NetworkPartitionContext;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
@@ -54,14 +53,14 @@ public class RoundRobin implements AutoscaleAlgorithm{
networkPartitionContext.setCurrentPartitionIndex(nextPartitionIndex);
// current partition has no partitionid-instanceid info in cluster context
- if(!networkPartitionContext.partitionCountExists(currentPartitionId))
- AutoscalerContext.getInstance().getMonitor(clusterId)
- .getNetworkPartitionCtxt(networkPartitionContext.getId())
- .addPartitionCount(currentPartitionId, 0);
+// if(!networkPartitionContext.partitionCountExists(currentPartitionId))
+// AutoscalerContext.getInstance().getMonitor(clusterId)
+// .getNetworkPartitionCtxt(networkPartitionContext.getId())
+// .addPartitionCount(currentPartitionId, 0);
- if(networkPartitionContext.getMemberCount(currentPartitionId) < currentPartition.getPartitionMax()){
+ if(networkPartitionContext.getMemberCountOfPartition(currentPartitionId) < currentPartition.getPartitionMax()){
// current partition is free
- networkPartitionContext.increaseMemberCountInPartitionBy(currentPartitionId, 1);
+// networkPartitionContext.increaseMemberCountOfPartition(currentPartitionId, 1);
if(log.isDebugEnabled())
log.debug("Free space found in partition " + currentPartition.getId());
return currentPartition;
@@ -106,14 +105,14 @@ public class RoundRobin implements AutoscaleAlgorithm{
Partition currentPartition = (Partition) partitions.get(currentPartitionIndex);
String currentPartitionId = currentPartition.getId();
- if (!networkPartitionContext.partitionCountExists(currentPartitionId))
- AutoscalerContext.getInstance().getMonitor(clusterId)
- .getNetworkPartitionCtxt(networkPartitionContext.getId())
- .addPartitionCount(currentPartitionId, 0);
+// if (!networkPartitionContext.partitionCountExists(currentPartitionId))
+// AutoscalerContext.getInstance().getMonitor(clusterId)
+// .getNetworkPartitionCtxt(networkPartitionContext.getId())
+// .addPartitionCount(currentPartitionId, 0);
// has more than minimum instances.
- if (networkPartitionContext.getMemberCount(currentPartitionId) > currentPartition.getPartitionMin()) {
+ if (networkPartitionContext.getMemberCountOfPartition(currentPartitionId) > currentPartition.getPartitionMin()) {
// current partition is free
- networkPartitionContext.decreaseMemberCountInPartitionBy(currentPartitionId, 1);
+// networkPartitionContext.decreaseMemberCountOfPartition(currentPartitionId, 1);
if (log.isDebugEnabled()) {
log.debug("Returning partition for scaling down " +
currentPartition.getId());
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
index dab18cb..74d9770 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
@@ -182,6 +182,7 @@ public class AutoscalerTopologyReceiver implements Runnable {
MemberTerminatedEvent e = (MemberTerminatedEvent) event;
String networkPartitionId = e.getNetworkPartitionId();
String clusterId = e.getClusterId();
+ String partitionId = e.getPartitionId();
AbstractMonitor monitor;
if(AutoscalerContext.getInstance().moniterExist(clusterId)){
@@ -195,12 +196,13 @@ public class AutoscalerTopologyReceiver implements Runnable {
NetworkPartitionContext networkPartitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId);
- networkPartitionContext.getPartitionCtxt(e.getPartitionId())
- .removeMemberStatsContext(e.getMemberId());
+ PartitionContext partitionContext = networkPartitionContext.getPartitionCtxt(partitionId);
+ partitionContext.removeMemberStatsContext(e.getMemberId());
+ partitionContext.decrementCurrentActiveMemberCount(1);
+
if(log.isInfoEnabled()){
log.info(String.format("Member stat context has been removed: [member] %s", e.getMemberId()));
}
- networkPartitionContext.decreaseMemberCountInPartitionBy(e.getPartitionId(), 1);
} finally {
TopologyManager.releaseReadLock();
@@ -236,7 +238,7 @@ public class AutoscalerTopologyReceiver implements Runnable {
if(log.isInfoEnabled()){
log.info(String.format("Member stat context has been added: [member] %s", memberId));
}
- partitionContext.incrementCurrentMemberCount(1);
+ partitionContext.incrementCurrentActiveMemberCount(1);
partitionContext.removePendingMember(memberId);
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 71eeb63..b1d74c5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -132,11 +132,13 @@ public class AutoscalerUtil {
if(MemberStatus.Activated.equals(member.getStatus())){
partitionContext.addActiveMember(memberContext);
- networkPartitionContext.increaseMemberCountInPartitionBy(partition.getId(), 1);
+// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
+ partitionContext.incrementCurrentActiveMemberCount(1);
+
} else if(MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())){
partitionContext.addPendingMember(memberContext);
- networkPartitionContext.increaseMemberCountInPartitionBy(partition.getId(), 1);
+// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
} else if(MemberStatus.Suspended.equals(member.getStatus())){
partitionContext.addFaultyMember(memberId);
}
@@ -234,15 +236,17 @@ public class AutoscalerUtil {
if (MemberStatus.Activated.equals(member.getStatus())) {
partitionContext.addActiveMember(memberContext);
+// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
+ partitionContext.incrementCurrentActiveMemberCount(1);
} else if (MemberStatus.Created.equals(member.getStatus()) ||
MemberStatus.Starting.equals(member.getStatus())) {
partitionContext.addPendingMember(memberContext);
+// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1);
} else if (MemberStatus.Suspended.equals(member.getStatus())) {
partitionContext.addFaultyMember(memberId);
}
partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
- partitionContext.incrementCurrentMemberCount(1);
if(log.isInfoEnabled()){
log.info(String.format("Member stat context has been added: [member] %s", memberId));
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/02bc1fd0/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl b/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl
index 93dcda1..bef3370 100755
--- a/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl
+++ b/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl
@@ -54,7 +54,7 @@ rule "Minimum Rule"
dialect "mvel"
when
$ctxt : PartitionContext ()
- eval($ctxt.getCurrentMemberCount() < $ctxt.getMinimumMemberCount())
+ eval($ctxt.getTotalMemberCount() < $ctxt.getMinimumMemberCount())
then
$delegator.delegateSpawn($ctxt, clusterId, lbRef);
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos
Posted by la...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/096398a5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/096398a5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/096398a5
Branch: refs/heads/master
Commit: 096398a5d8179e75c53c2c60087779735063a403
Parents: 02bc1fd c03a42a
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Wed Dec 25 15:52:59 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Wed Dec 25 15:52:59 2013 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 4 +-
.../internal/CloudControllerDSComponent.java | 2 +-
.../topic/TopologySynchronizerTask.java | 64 -----------
.../InstanceStatusEventMessageDelegator.java | 68 ++++++++++++
.../InstanceStatusEventMessageListener.java | 43 ++++++++
.../status/InstanceStatusEventMessageQueue.java | 44 ++++++++
.../InstanceStatusEventMessageDelegator.java | 66 -----------
.../InstanceStatusEventMessageListener.java | 42 -------
.../controller/topology/TopologyBuilder.java | 68 ++++++------
.../controller/topology/TopologyManager.java | 109 +++++++++----------
.../topology/TopologySynchronizerTask.java | 62 +++++++++++
11 files changed, 306 insertions(+), 266 deletions(-)
----------------------------------------------------------------------