fixing evaluating the status

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

Branch: refs/heads/docker-grouping-merge
Commit: ae257c168a7b7590475d0f07a8cd7bda758bbaef
Parents: fe4cced
Author: reka <[email protected]>
Authored: Thu Oct 30 20:13:25 2014 +0530
Committer: reka <[email protected]>
Committed: Thu Oct 30 20:13:25 2014 +0530

----------------------------------------------------------------------
 .../AutoscalerTopologyEventReceiver.java        |  1 +
 .../monitor/AbstractClusterMonitor.java         | 10 ++++++++
 .../monitor/cluster/ClusterMonitor.java         |  3 ++-
 .../autoscaler/monitor/group/GroupMonitor.java  | 14 ++++++----
 .../status/checker/StatusChecker.java           | 27 ++++++++++----------
 5 files changed, 36 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
index b02b2c9..54a1461 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -174,6 +174,7 @@ public class AutoscalerTopologyEventReceiver implements 
Runnable {
                         (AbstractClusterMonitor) 
AutoscalerContext.getInstance().getMonitor(clusterId);
 
                 //changing the status in the monitor, will notify its parent 
monitor
+                clusterMonitor.setStop(true);
                 clusterMonitor.setStatus(ClusterStatus.Created);
 
             }

http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
index 8ec65c7..ac0871d 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
@@ -66,6 +66,8 @@ abstract public class AbstractClusterMonitor extends Monitor 
implements Runnable
 
     protected boolean hasFaultyMember = false;
 
+    protected boolean stop = false;
+
     protected ClusterStatus status;
 
     //protected ParentComponentMonitor parent;
@@ -274,4 +276,12 @@ abstract public class AbstractClusterMonitor extends 
Monitor implements Runnable
     public void setHasFaultyMember(boolean hasFaultyMember) {
         this.hasFaultyMember = hasFaultyMember;
     }
+
+    public boolean isStop() {
+        return stop;
+    }
+
+    public void setStop(boolean stop) {
+        this.stop = stop;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/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 67539ed..988f266 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
@@ -87,7 +87,8 @@ public class ClusterMonitor extends AbstractClusterMonitor {
         while (!isDestroyed()) {
             try {
                 if (((this.status.getCode() <= ClusterStatus.Active.getCode()) 
||
-                        (this.status == ClusterStatus.Inactive && 
!hasDependent)) && !this.hasFaultyMember) {
+                        (this.status == ClusterStatus.Inactive && 
!hasDependent)) && !this.hasFaultyMember
+                         && !stop) {
                     if (log.isDebugEnabled()) {
                         log.debug("Cluster monitor is running.. " + 
this.toString());
                     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
index 4a789bf..3623de9 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
@@ -73,6 +73,15 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
         } else if (status1 == ClusterStatus.Inactive || status1 == 
GroupStatus.Inactive) {
             onChildInActiveEvent(id);
 
+        } else if (status1 == ClusterStatus.Created || status1 == 
GroupStatus.Created) {
+            if(this.aliasToInActiveMonitorsMap.containsKey(id)) {
+                this.aliasToInActiveMonitorsMap.remove(id);
+            }
+            if (this.status == GroupStatus.Terminating) {
+                StatusChecker.getInstance().onChildStatusChange(id, this.id, 
this.appId);
+            } else {
+                onChildTerminatedEvent(id);
+            }
         } else if (status1 == ClusterStatus.Terminating || status1 == 
GroupStatus.Terminating) {
             //mark the child monitor as inActive in the map
             this.markMonitorAsInactive(id);
@@ -84,15 +93,10 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
             } else {
                 log.warn("[monitor] " + id + " cannot be found in the inActive 
monitors list");
             }
-
             if (this.status == GroupStatus.Terminating || this.status == 
GroupStatus.Terminated) {
                 StatusChecker.getInstance().onChildStatusChange(id, this.id, 
this.appId);
                 log.info("Executing the un-subscription request for the 
[monitor] " + id);
-            } else {
-                onChildTerminatedEvent(id);
-
             }
-
         }
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
index a23e5bd..a742b89 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
@@ -331,7 +331,7 @@ public class StatusChecker {
                         log.info("sending group created : " + 
parent.getUniqueIdentifier());
                         StatusEventPublisher.sendGroupCreatedEvent(appId, 
parent.getUniqueIdentifier());
                     }
-                } else if (groups.isEmpty() && clusterStatus == 
ClusterStatus.Terminating ||
+                /*} else if (groups.isEmpty() && clusterStatus == 
ClusterStatus.Terminating ||
                         clusterData.isEmpty() && groupStatus == 
GroupStatus.Terminating ||
                         groupStatus == GroupStatus.Terminating && 
clusterStatus == ClusterStatus.Terminating) {
                     if (parent instanceof Application) {
@@ -340,7 +340,7 @@ public class StatusChecker {
                         //send activation to the parent
                         log.info("sending group terminating : " + 
parent.getUniqueIdentifier());
                         StatusEventPublisher.sendGroupTerminatingEvent(appId, 
parent.getUniqueIdentifier());
-                    }
+                    }*/
                 } else if (groups.isEmpty() && clusterStatus == 
ClusterStatus.Created ||
                         clusterData.isEmpty() && groupStatus == 
GroupStatus.Created ||
                         groupStatus == GroupStatus.Created && clusterStatus == 
ClusterStatus.Created) {
@@ -393,15 +393,15 @@ public class StatusChecker {
                 groupActive = false;
                 groupTerminated = false;
                 groupCreated = groupCreated && true;
-            } else if (group.getStatus() == GroupStatus.Terminating) {
-                groupActive = false;
-                groupTerminated = false;
-                groupCreated = false;
-                status = GroupStatus.Terminating;
-
             }
         }
 
+        if(groups == null || groups != null && groups.isEmpty()) {
+            groupActive = false;
+            groupTerminated = false;
+            groupCreated = false;
+        }
+
         if (groupActive) {
             status = GroupStatus.Active;
         } else if (groupTerminated) {
@@ -435,11 +435,6 @@ public class StatusChecker {
                 clusterActive = false;
                 clusterCreated = false;
                 clusterTerminated = clusterTerminated && true;
-            } else if (cluster.getStatus() == ClusterStatus.Terminating) {
-                status = ClusterStatus.Terminating;
-                clusterActive = false;
-                clusterTerminated = false;
-                clusterCreated = false;
             } else if (cluster.getStatus() == ClusterStatus.Created) {
                 clusterActive = false;
                 clusterTerminated = false;
@@ -447,6 +442,12 @@ public class StatusChecker {
             }
         }
 
+        if(clusterData == null || clusterData != null && 
clusterData.isEmpty()) {
+            clusterActive = false;
+            clusterTerminated = false;
+            clusterCreated = false;
+        }
+
         if (clusterActive) {
             status = ClusterStatus.Active;
         } else if (clusterTerminated) {

Reply via email to