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