You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/12/18 11:20:45 UTC

stratos git commit: fixing group status verification issue

Repository: stratos
Updated Branches:
  refs/heads/master 1c6642b46 -> 93243b8dd


fixing group status verification issue


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/93243b8d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/93243b8d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/93243b8d

Branch: refs/heads/master
Commit: 93243b8dd08b2099381f14351d1385dfbe421189
Parents: 1c6642b
Author: reka <rt...@gmail.com>
Authored: Thu Dec 18 15:50:35 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 18 15:50:35 2014 +0530

----------------------------------------------------------------------
 .../monitor/component/GroupMonitor.java         | 36 ++++++++++++--------
 1 file changed, 21 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/93243b8d/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 a6c99ce..85b58d4 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
@@ -50,10 +50,10 @@ import org.apache.stratos.messaging.domain.instance.Instance;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
 
-import java.util.*;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * This is GroupMonitor to monitor the group which consists of
@@ -702,7 +702,6 @@ public class GroupMonitor extends ParentComponentMonitor {
     }
 
 
-
     public boolean verifyGroupStatus(String childId, String instanceId, GroupStatus requiredStatus) {
         Monitor monitor = this.getMonitor(childId);
         List<String> groupInstances;
@@ -725,20 +724,27 @@ public class GroupMonitor extends ParentComponentMonitor {
             if (childGroupInstance.getStatus() == requiredStatus) {
                 noOfInstancesOfRequiredStatus++;
             }
+        }
 
-            if (!groupInstances.isEmpty()) {
-                GroupLevelNetworkPartitionContext networkPartitionContext =
-                        (GroupLevelNetworkPartitionContext) this.networkPartitionCtxts.
-                        get(networkPartitionId);
-                int minInstances = networkPartitionContext.getMinInstanceCount();
-                //if terminated all the instances in this instances map should be in terminated state
-                if (noOfInstancesOfRequiredStatus == this.inactiveInstancesMap.size() &&
-                        requiredStatus == GroupStatus.Terminated) {
-                    return true;
-                } else if (noOfInstancesOfRequiredStatus >= minInstances) {
+        if (!groupInstances.isEmpty()) {
+            GroupLevelNetworkPartitionContext networkPartitionContext =
+                    (GroupLevelNetworkPartitionContext) this.networkPartitionCtxts.
+                            get(networkPartitionId);
+            int minInstances = networkPartitionContext.getMinInstanceCount();
+            //if terminated all the instances in this instances map should be in terminated state
+            //if terminated all the instances in this instances map should be in terminated state
+            if (noOfInstancesOfRequiredStatus == this.inactiveInstancesMap.size() &&
+                    requiredStatus == GroupStatus.Terminated) {
+                return true;
+            } else if (noOfInstancesOfRequiredStatus >= minInstances) {
+                return true;
+            } else {
+                //of only one is inActive implies that the whole group is Inactive
+                if (requiredStatus == GroupStatus.Inactive && noOfInstancesOfRequiredStatus >= 1) {
                     return true;
                 }
             }
+
         }
         return false;
     }