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/11 14:54:34 UTC

[4/7] stratos git commit: adding a map to keep track of inactive and terminating instances

adding a map to keep track of inactive and terminating instances


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

Branch: refs/heads/4.1.0-test
Commit: dc5ae90d86e48fd0e96247b1977bcd79d515a841
Parents: 590a4f6
Author: reka <rt...@gmail.com>
Authored: Wed Dec 10 20:27:48 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:23:20 2014 +0530

----------------------------------------------------------------------
 .../monitor/component/ApplicationMonitor.java   |  2 +-
 .../monitor/component/GroupMonitor.java         | 73 ++++++++------------
 .../component/ParentComponentMonitor.java       |  6 +-
 3 files changed, 34 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/dc5ae90d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index ae8ba9a..f8f2e82 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -141,7 +141,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
             onChildInactiveEvent(childId, instanceId);
 
         } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) {
-            //mark the child monitor as inactive in the map
+            //mark the child monitor as inActive in the map
             markInstanceAsTerminating(childId, instanceId);
 
         } else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/dc5ae90d/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 00ac964..10bcec1 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
@@ -173,54 +173,41 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
 
     @Override
     public void onChildStatusEvent(MonitorStatusEvent statusEvent) {
-        final String childId = statusEvent.getId();
-        final String instanceId = statusEvent.getInstanceId();
-        final LifeCycleState status1 = statusEvent.getStatus();
-        final String id = this.id;
-        //TODO get lock when executing this
-        Runnable monitoringRunnable = new Runnable() {
-            @Override
-            public void run() {
-                //Events coming from parent are In_Active(in faulty detection), Scaling events, termination
+        String childId = statusEvent.getId();
+        String instanceId = statusEvent.getInstanceId();
+        LifeCycleState status1 = statusEvent.getStatus();
+        //Events coming from parent are In_Active(in faulty detection), Scaling events, termination
 
-                if (status1 == ClusterStatus.Active || status1 == GroupStatus.Active) {
-                    onChildActivatedEvent(childId, instanceId);
+        if (status1 == ClusterStatus.Active || status1 == GroupStatus.Active) {
+            onChildActivatedEvent(childId, instanceId);
 
-                } else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
-                    //handling restart of stratos
-                    if (!aliasToActiveMonitorsMap.get(childId).hasStartupDependents()) {
-                        onChildActivatedEvent(childId, instanceId);
-                    } else {
-                        markInstanceAsInactive(childId, instanceId);
-                        onChildInactiveEvent(childId, instanceId);
-                    }
+        } else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
+            //handling restart of stratos
+            if (!this.aliasToActiveMonitorsMap.get(childId).hasStartupDependents()) {
+                onChildActivatedEvent(childId, instanceId);
+            } else {
+                this.markInstanceAsInactive(childId, instanceId);
+                onChildInactiveEvent(childId, instanceId);
+            }
 
-                } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) {
-                    //mark the child monitor as inactive in the map
-                    markInstanceAsTerminating(childId, instanceId);
-
-                } else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {
-                    //Check whether all dependent goes Terminated and then start them in parallel.
-                    removeInstanceFromFromInactiveMap(childId, instanceId);
-                    removeInstanceFromFromTerminatingMap(childId, instanceId);
-
-                    GroupInstance instance = (GroupInstance) instanceIdToInstanceMap.get(instanceId);
-                    if (instance != null) {
-                        if (instance.getStatus() == GroupStatus.Terminating || instance.getStatus() == GroupStatus.Terminated) {
-                            ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(id,
-                                    appId, instanceId);
-                        } else {
-                            onChildTerminatedEvent(childId, instanceId);
-                        }
-                    } else {
-                        log.warn("The required instance cannot be found in the the [GroupMonitor] " +
-                                id);
-                    }
+        } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) {
+            //mark the child monitor as inActive in the map
+            markInstanceAsTerminating(childId, instanceId);
+
+        } else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {
+            //Check whether all dependent goes Terminated and then start them in parallel.
+            removeInstanceFromFromInactiveMap(childId, instanceId);
+            removeInstanceFromFromTerminatingMap(childId, instanceId);
+            GroupInstance instance = (GroupInstance) this.instanceIdToInstanceMap.get(instanceId);
+            if (instance != null) {
+                if (instance.getStatus() == GroupStatus.Terminating || instance.getStatus() == GroupStatus.Terminated) {
+                    ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(this.id,
+                            appId, instanceId);
+                } else {
+                    onChildTerminatedEvent(childId, instanceId);
                 }
             }
-        };
-        monitoringRunnable.run();
-
+        }
 
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/dc5ae90d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index 6156015..2b6ce96 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -45,6 +45,7 @@ import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
 import org.apache.stratos.messaging.domain.applications.ParentComponent;
 import org.apache.stratos.messaging.domain.instance.ClusterInstance;
+import org.apache.stratos.messaging.domain.instance.Instance;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 
@@ -497,8 +498,7 @@ public abstract class ParentComponentMonitor extends Monitor {
 
     // move to inactive monitors list to use in the Terminated event
     protected synchronized void markInstanceAsInactive(String childId, String instanceId) {
-
-        if (this.inactiveInstancesMap.containsKey(childId)) {
+        if (!this.inactiveInstancesMap.containsKey(childId)) {
             this.inactiveInstancesMap.get(childId).add(instanceId);
         } else {
             List<String> instanceIds = new ArrayList<String>();
@@ -531,7 +531,7 @@ public abstract class ParentComponentMonitor extends Monitor {
 
     // move to inactive monitors list to use in the Terminated event
     protected synchronized void markInstanceAsTerminating(String childId, String instanceId) {
-        if (this.terminatingInstancesMap.containsKey(childId)) {
+        if (!this.terminatingInstancesMap.containsKey(childId)) {
             if (this.inactiveInstancesMap.containsKey(childId) &&
                     this.inactiveInstancesMap.get(childId).contains(instanceId)) {
                 this.inactiveInstancesMap.get(childId).remove(instanceId);