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(-)
----------------------------------------------------------------------