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:31 UTC
[1/7] stratos git commit: fixing a build failure due to partial commit
Repository: stratos
Updated Branches:
refs/heads/4.1.0-test fb8f23efc -> d64f31438
fixing a build failure due to partial commit
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/590a4f6d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/590a4f6d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/590a4f6d
Branch: refs/heads/4.1.0-test
Commit: 590a4f6dbea74f8fd4074d655b1c522f83fe61a2
Parents: 359d323
Author: reka <rt...@gmail.com>
Authored: Mon Dec 8 19:20:25 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:20:13 2014 +0530
----------------------------------------------------------------------
.../component/ParentComponentMonitor.java | 25 ++++++++++++++++----
1 file changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/590a4f6d/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 f2f345a..6156015 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
@@ -104,7 +104,7 @@ public abstract class ParentComponentMonitor extends Monitor {
MonitorNotFoundException {
//start the first dependency
List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
- getStarAbleDependencies();
+ getStartAbleDependencies();
startDependency(applicationContexts, instanceId);
}
@@ -128,7 +128,7 @@ public abstract class ParentComponentMonitor extends Monitor {
public void startDependency(ParentComponent component) {
//start the first dependency
List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
- getStarAbleDependencies();
+ getStartAbleDependencies();
Collection<Instance> contexts = component.getInstanceIdToInstanceContextMap().values();
//traversing through all the Instance context and start them
List<String> instanceIds = new ArrayList<String>();
@@ -164,10 +164,13 @@ public abstract class ParentComponentMonitor extends Monitor {
* by traversing to find the terminated dependencies.
* it will get invoked when start a child monitor on termination of a sub tree
*/
- public void startDependencyOnTermination() throws TopologyInConsistentException {
+
+ public void startDependencyOnTermination(String instanceId) throws TopologyInConsistentException,
+ MonitorNotFoundException, PolicyValidationException, PartitionValidationException {
+
//start the first dependency which went to terminated
List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
- getStarAbleDependenciesByTermination();
+ getStarAbleDependenciesByTermination(this, instanceId);
for(ApplicationChildContext context : applicationContexts) {
if(context instanceof GroupChildContext) {
GroupMonitor groupMonitor = (GroupMonitor) this.aliasToActiveMonitorsMap.
@@ -382,7 +385,15 @@ public abstract class ParentComponentMonitor extends Monitor {
(parentContexts.isEmpty() || parentsTerminated || allParentsActive)) {
//Find the non existent monitor by traversing dependency tree
try {
- this.startDependencyOnTermination();
+ try {
+ this.startDependencyOnTermination(instanceId);
+ } catch (MonitorNotFoundException e) {
+ e.printStackTrace();
+ } catch (PolicyValidationException e) {
+ e.printStackTrace();
+ } catch (PartitionValidationException e) {
+ e.printStackTrace();
+ }
} catch (TopologyInConsistentException e) {
//TODO revert the siblings and notify parent, change a flag for reverting/un-subscription
log.error("Error while starting the monitor upon termination" + e);
@@ -574,6 +585,10 @@ public abstract class ParentComponentMonitor extends Monitor {
return hasMonitor;
}
+ public Monitor getMonitor(String childId) {
+ return this.aliasToActiveMonitorsMap.get(childId);
+ }
+
public boolean hasMonitors() {
return this.aliasToActiveMonitorsMap != null;
[7/7] stratos git commit: fixing undeployment by making the status
calculation sync call
Posted by re...@apache.org.
fixing undeployment by making the status calculation sync call
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d64f3143
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d64f3143
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d64f3143
Branch: refs/heads/4.1.0-test
Commit: d64f31438ac9053334b221be4bb54499fa769085
Parents: 9ccd501
Author: reka <rt...@gmail.com>
Authored: Thu Dec 11 19:19:49 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:24:11 2014 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 7 +++++
.../stratos/autoscaler/monitor/Monitor.java | 2 ++
.../monitor/cluster/AbstractClusterMonitor.java | 2 --
.../monitor/component/ApplicationMonitor.java | 5 ++++
.../monitor/component/GroupMonitor.java | 4 +++
.../component/ParentComponentMonitor.java | 12 ++++++---
.../group/GroupStatusProcessorChain.java | 28 ++++++++------------
.../ApplicationInstanceActivatedEvent.java | 1 -
8 files changed, 38 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index 1194a6f..ae87ac2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -25,6 +25,7 @@ import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext
import org.apache.stratos.autoscaler.client.CloudControllerClient;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
+import org.apache.stratos.autoscaler.monitor.Monitor;
import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
import org.apache.stratos.autoscaler.monitor.component.GroupMonitor;
import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
@@ -345,6 +346,12 @@ public class ApplicationBuilder {
//removing the group instance and context
GroupMonitor monitor = getGroupMonitor(appId, groupId);
if(monitor != null) {
+ if(monitor.hasMonitors()) {
+ for(Monitor monitor1 : monitor.getAliasToActiveMonitorsMap().values()) {
+ //destroying the drools
+ monitor1.destroy();
+ }
+ }
monitor.getNetworkPartitionContext(context.getNetworkPartitionId()).
removeClusterGroupContext(instanceId);
monitor.removeInstance(instanceId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
index 5656b19..88159c1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
@@ -43,6 +43,8 @@ public abstract class Monitor implements EventHandler {
//monitors map, key=InstanceId and value=ClusterInstance/GroupInstance/ApplicationInstance
protected Map<String, Instance> instanceIdToInstanceMap;
+ public abstract void destroy();
+
public Monitor() {
this.instanceIdToInstanceMap = new HashMap<String, Instance>();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
index 1248224..d39b805 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
@@ -94,8 +94,6 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
protected abstract void monitor();
- public abstract void destroy();
-
//handle health events
public abstract void handleAverageLoadAverageEvent(
AverageLoadAverageEvent averageLoadAverageEvent);
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/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 9d0a943..aecfbf8 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
@@ -359,4 +359,9 @@ public class ApplicationMonitor extends ParentComponentMonitor {
public void setTerminating(boolean isTerminating) {
this.isTerminating = isTerminating;
}
+
+ @Override
+ public void destroy() {
+ //TODO to wipe out the drools
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/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 15aa733..e13cef4 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
@@ -680,4 +680,8 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
}
+ @Override
+ public void destroy() {
+ //TODO to stop all the drools
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/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 2b6ce96..46e69ee 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
@@ -287,14 +287,20 @@ public abstract class ParentComponentMonitor extends Monitor {
/**
* @param childId
*/
- protected void onChildInactiveEvent(String childId, String instanceId) {
+ protected void onChildInactiveEvent(String childId, final String instanceId) {
List<ApplicationChildContext> terminationList;
Monitor monitor;
terminationList = this.startupDependencyTree.getTerminationDependencies(childId);
//Need to notify the parent about the status change from Active-->InActive
// TODO to make app also inaction if (this.parent != null) {
- ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().
- process(this.id, this.appId, instanceId);
+ Runnable monitoringRunnable = new Runnable() {
+ @Override
+ public void run() {
+ ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().
+ process(id, appId, instanceId);
+ }
+ };
+ monitoringRunnable.run();
//}
//TODO checking whether terminating them in reverse order,
// TODO if so can handle it in the parent event.
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
index 9b0631e..92c0951 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
@@ -50,24 +50,18 @@ public class GroupStatusProcessorChain extends StatusProcessorChain {
}
public void process(final String idOfComponent, final String appId,
- final String instanceId) {
+ final String instanceId) {
- Runnable monitoringRunnable = new Runnable() {
- @Override
- public void run() {
- GroupStatusProcessor root = (GroupStatusProcessor) list.getFirst();
- if (root == null) {
- throw new RuntimeException("Message processor chain is not initialized");
- }
- if (log.isInfoEnabled()) {
- log.info("GroupProcessor chain calculating the status for the group " +
- "[ " + idOfComponent + " ]");
- }
- root.process(idOfComponent, appId, instanceId);
- }
- };
- monitoringRunnable.run();
- }
+ GroupStatusProcessor root = (GroupStatusProcessor) list.getFirst();
+ if (root == null) {
+ throw new RuntimeException("Message processor chain is not initialized");
+ }
+ if (log.isInfoEnabled()) {
+ log.info("GroupProcessor chain calculating the status for the group " +
+ "[ " + idOfComponent + " ]");
+ }
+ root.process(idOfComponent, appId, instanceId);
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/d64f3143/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceActivatedEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceActivatedEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceActivatedEvent.java
index 855f07e..7de8ca8 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceActivatedEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceActivatedEvent.java
@@ -26,7 +26,6 @@ import java.io.Serializable;
* This event will be fired upon the application activated is detected.
*/
public class ApplicationInstanceActivatedEvent extends Event implements Serializable {
- private static final long serialVersionUID = 2625412714611885089L;
private String appId;
private String instanceId;
[4/7] stratos git commit: adding a map to keep track of inactive and
terminating instances
Posted by re...@apache.org.
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);
[6/7] stratos git commit: fixing terminated processors to notify
listeners if instance already removed
Posted by re...@apache.org.
fixing terminated processors to notify listeners if instance already removed
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9ccd5017
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9ccd5017
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9ccd5017
Branch: refs/heads/4.1.0-test
Commit: 9ccd50175184c6c7c3e100034bd0bacea659dbc8
Parents: 196336c
Author: reka <rt...@gmail.com>
Authored: Thu Dec 11 14:48:58 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:24:11 2014 +0530
----------------------------------------------------------------------
...ationInstanceTerminatedMessageProcessor.java | 10 ++++++---
.../GroupInstanceTerminatedProcessor.java | 21 +++++++++---------
.../ClusterInstanceCreatedMessageProcessor.java | 4 +++-
.../ClusterInstanceTerminatedProcessor.java | 23 ++++++++++----------
4 files changed, 32 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9ccd5017/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
index ebba54b..5479050 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
@@ -93,10 +93,14 @@ public class ApplicationInstanceTerminatedMessageProcessor extends MessageProces
ApplicationInstance instance = applications.getApplication(appId).
getInstanceContexts(instanceId);
if(instance == null) {
- log.info("Application [Instance] " + instanceId + " has already been removed");
+ if(log.isDebugEnabled()) {
+ log.debug("Application [Instance] " + instanceId + " has already been removed");
+ }
+ } else {
+ instance.setStatus(ApplicationStatus.Terminated);
+ applications.getApplication(appId).removeInstance(instanceId);
}
- instance.setStatus(ApplicationStatus.Terminated);
- applications.getApplication(appId).removeInstance(instanceId);
+
}
notifyEventListeners(event);
http://git-wip-us.apache.org/repos/asf/stratos/blob/9ccd5017/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/GroupInstanceTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/GroupInstanceTerminatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/GroupInstanceTerminatedProcessor.java
index 9fe8919..4b29f3f 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/GroupInstanceTerminatedProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/GroupInstanceTerminatedProcessor.java
@@ -96,22 +96,21 @@ public class GroupInstanceTerminatedProcessor extends MessageProcessor {
} else {
GroupInstance context = group.getInstanceContexts(event.getInstanceId());
if(context == null) {
- if (log.isWarnEnabled()) {
- log.warn(String.format("Group Instance not exists in Group: [AppId] %s [groupId] %s " +
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Group Instance alread removed in Group: [AppId] %s [groupId] %s " +
"[instanceId] %s", event.getAppId(), event.getGroupId(),
event.getInstanceId()));
+ }
+ } else {
+ // Apply changes to the topology
+ GroupStatus status = GroupStatus.Terminated;
+ if (!context.isStateTransitionValid(status)) {
+ log.error("Invalid State Transition from " + context.getStatus() + " to " +
+ status);
return false;
}
+ context.setStatus(status);
}
- // Apply changes to the topology
- GroupStatus status = GroupStatus.Terminated;
- if (!context.isStateTransitionValid(status)) {
- log.error("Invalid State Transition from " + context.getStatus() + " to " +
- status);
- return false;
- }
- context.setStatus(status);
-
}
// Notify event listeners
http://git-wip-us.apache.org/repos/asf/stratos/blob/9ccd5017/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
index bb52d42..5e1fbcb 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
@@ -113,6 +113,7 @@ public class ClusterInstanceCreatedMessageProcessor extends MessageProcessor {
log.debug(String.format("Cluster not exists in service: [service] %s [cluster] %s", event.getServiceName(),
event.getClusterId()));
}
+ return false;
} else {
// Apply changes to the topology
ClusterInstance clusterInstance = event.getClusterInstance();
@@ -122,8 +123,9 @@ public class ClusterInstanceCreatedMessageProcessor extends MessageProcessor {
"[service] %s [cluster] %s [Instance] %s", event.getServiceName(),
event.getClusterId(), clusterInstance.getInstanceId()));
}
+ } else {
+ cluster.addInstanceContext(clusterInstance.getInstanceId(), clusterInstance);
}
- cluster.addInstanceContext(clusterInstance.getInstanceId(), clusterInstance);
}
// Notify event listeners
notifyEventListeners(event);
http://git-wip-us.apache.org/repos/asf/stratos/blob/9ccd5017/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
index 4e43f35..629f32a 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
@@ -122,18 +122,19 @@ public class ClusterInstanceTerminatedProcessor extends MessageProcessor {
// Apply changes to the topology
ClusterInstance context = cluster.getInstanceContexts(event.getInstanceId());
if(context == null) {
- log.warn("Cluster Instance Context is not found for [cluster] " +
- event.getClusterId() + " [instance-id] " +
- event.getInstanceId());
- return false;
- }
- ClusterStatus status = ClusterStatus.Terminated;
- if (!context.isStateTransitionValid(status)) {
- log.error("Invalid State Transition from " + context.getStatus() + " to " + status);
+ if(log.isDebugEnabled()) {
+ log.warn("Cluster Instance Context is already removed for [cluster] " +
+ event.getClusterId() + " [instance-id] " +
+ event.getInstanceId());
+ }
+ } else {
+ ClusterStatus status = ClusterStatus.Terminated;
+ if (!context.isStateTransitionValid(status)) {
+ log.error("Invalid State Transition from " + context.getStatus() + " to " + status);
+ }
+ context.setStatus(status);
+ cluster.removeInstanceContext(event.getInstanceId());
}
- context.setStatus(status);
- cluster.removeInstanceContext(event.getInstanceId());
-
}
// Notify event listeners
[5/7] stratos git commit: fixing undeployment issue by removing the
instances
Posted by re...@apache.org.
fixing undeployment issue by removing the instances
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/196336cb
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/196336cb
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/196336cb
Branch: refs/heads/4.1.0-test
Commit: 196336cbee7254f65b2c6ae1a1b0f900f4f18b17
Parents: dc5ae90
Author: reka <rt...@gmail.com>
Authored: Thu Dec 11 14:19:04 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:24:11 2014 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 2 +-
.../topic/ApplicationsEventPublisher.java | 4 +-
.../partition/ClusterLevelPartitionContext.java | 9 +++++
.../AutoscalerTopologyEventReceiver.java | 1 +
.../monitor/cluster/VMClusterMonitor.java | 20 ++++++----
.../monitor/component/ApplicationMonitor.java | 2 +-
.../monitor/component/GroupMonitor.java | 27 ++++++++-----
.../group/GroupStatusActiveProcessor.java | 36 ++++++++----------
.../group/GroupStatusTerminatedProcessor.java | 33 ++++++++--------
.../group/GroupStatusTerminatingProcessor.java | 40 +++++++++-----------
.../ApplicationInstanceTerminatedEvent.java | 11 +++---
...licationInstanceCreatedMessageProcessor.java | 3 +-
...ationInstanceTerminatedMessageProcessor.java | 11 +++++-
.../ClusterInstanceTerminatedProcessor.java | 3 ++
14 files changed, 113 insertions(+), 89 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index d46a232..1194a6f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -304,7 +304,7 @@ public class ApplicationBuilder {
//ApplicationHolder.removeApplication(appId);
log.info("Application run time is removed: [application-id] " + appId);
}
- ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, clusterData);
+ ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, instanceId);
} else {
log.warn(String.format("Application state transition is not valid: [application-id] %s " +
" [current-status] %s [status-requested] %s", appId,
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
index 52e8c55..c03a92b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
@@ -119,12 +119,12 @@ public class ApplicationsEventPublisher {
publishEvent(applicationTerminatingEvent);
}
- public static void sendApplicationInstanceTerminatedEvent(String appId, Set<ClusterDataHolder> clusterData) {
+ public static void sendApplicationInstanceTerminatedEvent(String appId, String instanceId) {
if (log.isInfoEnabled()) {
log.info("Publishing Application terminated event for [application]: " + appId);
}
ApplicationInstanceTerminatedEvent applicationTerminatedEvent =
- new ApplicationInstanceTerminatedEvent(appId, clusterData);
+ new ApplicationInstanceTerminatedEvent(appId, instanceId);
publishEvent(applicationTerminatedEvent);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
index 663f301..f3f5046 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java
@@ -539,6 +539,15 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se
return null;
}
+ public MemberContext getObsoleteMember(String memberId) {
+ for (MemberContext memberContext : obsoletedMembers.values()) {
+ if (memberId.equals(memberContext.getMemberId())) {
+ return memberContext;
+ }
+ }
+ return null;
+ }
+
public long getTerminationPendingMemberExpiryTime() {
return terminationPendingMemberExpiryTime;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 53d60b7..865cfb7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -321,6 +321,7 @@ public class AutoscalerTopologyEventReceiver {
@Override
protected void onEvent(Event event) {
try {
+ log.info("[MemberReadyToShutdownEvent] Received: " + event.getClass());
MemberReadyToShutdownEvent memberReadyToShutdownEvent = (MemberReadyToShutdownEvent) event;
String clusterId = memberReadyToShutdownEvent.getClusterId();
AutoscalerContext asCtx = AutoscalerContext.getInstance();
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index cf1e090..f208edc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -919,15 +919,19 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
//move member to pending termination list
if (partitionCtxt.getPendingTerminationMember(memberId) != null) {
partitionCtxt.movePendingTerminationMemberToObsoleteMembers(memberId);
- } else if (partitionCtxt.getPendingTerminationMember(memberId) != null) {
- // add member to obsolete list since the member is shutdown ready member
- partitionCtxt.movePendingTerminationMemberToObsoleteMembers(memberId);
- }
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Member is removed from the pending termination members " +
+ "and moved to obsolete list: [member] %s " +
+ "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
+ }
+ } else if(partitionCtxt.getObsoleteMember(memberId) != null) {
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Member is in obsolete list: [member] %s " +
+ "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
+ }
+ } //TODO else part
+
- if (log.isInfoEnabled()) {
- log.info(String.format("Member is terminated and removed from the active members list: [member] %s " +
- "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
- }
} catch (Exception e) {
String msg = "Error processing event " + e.getLocalizedMessage();
log.error(msg, e);
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/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 f8f2e82..9d0a943 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
@@ -151,7 +151,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
ApplicationInstance instance = (ApplicationInstance) instanceIdToInstanceMap.get(instanceId);
if (instance != null) {
- if (instance.getStatus() == ApplicationStatus.Terminating) {
+ if (this.isTerminating()) {
ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(this.id,
appId, instanceId);
} else {
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/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 10bcec1..15aa733 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,9 +173,12 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
@Override
public void onChildStatusEvent(MonitorStatusEvent statusEvent) {
- String childId = statusEvent.getId();
- String instanceId = statusEvent.getInstanceId();
- LifeCycleState status1 = statusEvent.getStatus();
+
+ String childId = statusEvent.getId();
+ String instanceId = statusEvent.getInstanceId();
+ LifeCycleState status1 = statusEvent.getStatus();
+ String id = this.id;
+
//Events coming from parent are In_Active(in faulty detection), Scaling events, termination
if (status1 == ClusterStatus.Active || status1 == GroupStatus.Active) {
@@ -183,34 +186,40 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
} else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
//handling restart of stratos
- if (!this.aliasToActiveMonitorsMap.get(childId).hasStartupDependents()) {
+ if (!aliasToActiveMonitorsMap.get(childId).hasStartupDependents()) {
onChildActivatedEvent(childId, instanceId);
} else {
- this.markInstanceAsInactive(childId, instanceId);
+ markInstanceAsInactive(childId, instanceId);
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) {
//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);
+
+ GroupInstance instance = (GroupInstance) instanceIdToInstanceMap.get(instanceId);
if (instance != null) {
if (instance.getStatus() == GroupStatus.Terminating || instance.getStatus() == GroupStatus.Terminated) {
- ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(this.id,
+ 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);
}
}
-
}
+
+
+
@Override
public void onParentStatusEvent(MonitorStatusEvent statusEvent)
throws MonitorNotFoundException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
index da2562a..69a6bfa 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
@@ -81,27 +81,23 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (component.isGroupScalingEnabled()) {
-
- } else {
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
- getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) &&
- getAllGroupInSameState(groups, GroupStatus.Active, instanceId)) {
- //send activation event
- if (component instanceof Application) {
- //send application activated event
- log.info("sending app activate: " + appId);
- ApplicationBuilder.handleApplicationInstanceActivatedEvent(appId, instanceId);
- return true;
- } else if (component instanceof Group) {
- //send activation to the parent
- log.info("sending group activate: " + component.getUniqueIdentifier());
- ApplicationBuilder.handleGroupInstanceActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
- return true;
- }
-
+ if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
+ clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
+ getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) &&
+ getAllGroupInSameState(groups, GroupStatus.Active, instanceId)) {
+ //send activation event
+ if (component instanceof Application) {
+ //send application activated event
+ log.info("sending app activate: " + appId);
+ ApplicationBuilder.handleApplicationInstanceActivatedEvent(appId, instanceId);
+ return true;
+ } else if (component instanceof Group) {
+ //send activation to the parent
+ log.info("sending group activate: " + component.getUniqueIdentifier());
+ ApplicationBuilder.handleGroupInstanceActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
+ return true;
}
+
}
} finally {
ApplicationHolder.releaseWriteLock();
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
index b365d71..578037d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
@@ -39,6 +39,7 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
public void setNext(StatusProcessor nextProcessor) {
this.nextProcessor = (GroupStatusProcessor) nextProcessor;
}
+
@Override
public boolean process(String idOfComponent, String appId,
String instanceId) {
@@ -84,24 +85,20 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (component.isGroupScalingEnabled()) {
-
- } else {
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId) ||
- getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) &&
- getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId)) {
- //send the terminated event
- if (component instanceof Application) {
- log.info("sending app terminated: " + appId);
- ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
- return true;
- } else if (component instanceof Group) {
- log.info("sending group terminated : " + component.getUniqueIdentifier());
- ApplicationBuilder.handleGroupInstanceTerminatedEvent(appId,
- component.getUniqueIdentifier(), instanceId);
- return true;
- }
+ if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) ||
+ clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId) ||
+ getAllClusterInSameState(clusterData, ClusterStatus.Terminated, instanceId) &&
+ getAllGroupInSameState(groups, GroupStatus.Terminated, instanceId)) {
+ //send the terminated event
+ if (component instanceof Application) {
+ log.info("sending app terminated: " + appId);
+ ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
+ return true;
+ } else if (component instanceof Group) {
+ log.info("sending group terminated : " + component.getUniqueIdentifier());
+ ApplicationBuilder.handleGroupInstanceTerminatedEvent(appId,
+ component.getUniqueIdentifier(), instanceId);
+ return true;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
index 2fe0cd4..c536146 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
@@ -85,28 +85,24 @@ public class GroupStatusTerminatingProcessor extends GroupStatusProcessor {
groups = component.getAliasToGroupMap();
clusterData = component.getClusterDataMap();
- if (component.isGroupScalingEnabled()) {
-
- } else {
- if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) ||
- clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId) ||
- getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) &&
- getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId)) {
- //send the terminated event
- if (component instanceof Application) {
- log.info("sending app terminating for [application] " + appId + " and for " +
- " [instance] " + instanceId);
- ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
- return true;
- } else if (component instanceof Group) {
- //send activation to the parent
- log.info("sending group terminating for [group] " +
- component.getUniqueIdentifier() + " and for [instance] "
- + instanceId);
- ApplicationBuilder.handleGroupTerminatingEvent(appId,
- component.getUniqueIdentifier(), instanceId);
- return true;
- }
+ if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) ||
+ clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId) ||
+ getAllClusterInSameState(clusterData, ClusterStatus.Terminating, instanceId) &&
+ getAllGroupInSameState(groups, GroupStatus.Terminating, instanceId)) {
+ //send the terminated event
+ if (component instanceof Application) {
+ log.info("sending app terminating for [application] " + appId + " and for " +
+ " [instance] " + instanceId);
+ ApplicationBuilder.handleApplicationInstanceTerminatedEvent(appId, instanceId);
+ return true;
+ } else if (component instanceof Group) {
+ //send activation to the parent
+ log.info("sending group terminating for [group] " +
+ component.getUniqueIdentifier() + " and for [instance] "
+ + instanceId);
+ ApplicationBuilder.handleGroupTerminatingEvent(appId,
+ component.getUniqueIdentifier(), instanceId);
+ return true;
}
}
} finally {
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
index 1d05ba3..25def05 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/applications/ApplicationInstanceTerminatedEvent.java
@@ -31,18 +31,17 @@ public class ApplicationInstanceTerminatedEvent extends Event implements Seriali
private static final long serialVersionUID = 2625412714611885089L;
private String appId;
- private Set<ClusterDataHolder> clusterData;
-
- public ApplicationInstanceTerminatedEvent(String appId, Set<ClusterDataHolder> clusterData) {
+ private String instanceId;
+ public ApplicationInstanceTerminatedEvent(String appId, String instanceId) {
this.appId = appId;
- this.clusterData = clusterData;
+ this.instanceId = instanceId;
}
public String getAppId() {
return appId;
}
- public Set<ClusterDataHolder> getClusterData() {
- return clusterData;
+ public String getInstanceId() {
+ return instanceId;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
index e92d581..fe6a3f9 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceCreatedMessageProcessor.java
@@ -95,7 +95,8 @@ public class ApplicationInstanceCreatedMessageProcessor extends MessageProcessor
}
// check if an Application instance with same name exists in applications instance
- if (null != applications.getApplication(event.getApplicationId()).getInstanceByNetworkPartitionId(applicationInstance.getNetworkPartitionId())) {
+ if (null != applications.getApplication(event.getApplicationId()).
+ getInstanceByNetworkPartitionId(applicationInstance.getNetworkPartitionId())) {
log.warn("Application instance with id [ " + applicationInstance.getInstanceId() + " ] already exists");
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
index c7a39b5..ebba54b 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/ApplicationInstanceTerminatedMessageProcessor.java
@@ -20,7 +20,9 @@ package org.apache.stratos.messaging.message.processor.applications;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
import org.apache.stratos.messaging.domain.applications.Applications;
+import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
import org.apache.stratos.messaging.event.applications.ApplicationInstanceTerminatedEvent;
import org.apache.stratos.messaging.message.processor.MessageProcessor;
import org.apache.stratos.messaging.message.processor.applications.updater.ApplicationsUpdater;
@@ -85,9 +87,16 @@ public class ApplicationInstanceTerminatedMessageProcessor extends MessageProces
// check if an Application with same name exists in applications
String appId = event.getAppId();
+ String instanceId = event.getInstanceId();
if (applications.applicationExists(appId)) {
log.warn("Application with id [ " + appId + " ] still exists in Applications, removing it");
- applications.removeApplication(appId);
+ ApplicationInstance instance = applications.getApplication(appId).
+ getInstanceContexts(instanceId);
+ if(instance == null) {
+ log.info("Application [Instance] " + instanceId + " has already been removed");
+ }
+ instance.setStatus(ApplicationStatus.Terminated);
+ applications.getApplication(appId).removeInstance(instanceId);
}
notifyEventListeners(event);
http://git-wip-us.apache.org/repos/asf/stratos/blob/196336cb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
index 6f6d335..4e43f35 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceTerminatedProcessor.java
@@ -116,6 +116,7 @@ public class ClusterInstanceTerminatedProcessor extends MessageProcessor {
if (log.isDebugEnabled()) {
log.debug(String.format("Cluster not exists in service: [service] %s [cluster] %s", event.getServiceName(),
event.getClusterId()));
+ return false;
}
} else {
// Apply changes to the topology
@@ -124,12 +125,14 @@ public class ClusterInstanceTerminatedProcessor extends MessageProcessor {
log.warn("Cluster Instance Context is not found for [cluster] " +
event.getClusterId() + " [instance-id] " +
event.getInstanceId());
+ return false;
}
ClusterStatus status = ClusterStatus.Terminated;
if (!context.isStateTransitionValid(status)) {
log.error("Invalid State Transition from " + context.getStatus() + " to " + status);
}
context.setStatus(status);
+ cluster.removeInstanceContext(event.getInstanceId());
}
[2/7] stratos git commit: fixing group termination issue
Posted by re...@apache.org.
fixing group termination issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/359d323b
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/359d323b
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/359d323b
Branch: refs/heads/4.1.0-test
Commit: 359d323b98ff5d897eac64cae516ad8075b239f5
Parents: 681f597
Author: reka <rt...@gmail.com>
Authored: Tue Dec 9 11:29:28 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:20:13 2014 +0530
----------------------------------------------------------------------
.../autoscaler/monitor/component/ParentComponentMonitor.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/359d323b/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 91c3724..f2f345a 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
@@ -303,7 +303,7 @@ public abstract class ParentComponentMonitor extends Monitor {
//handling the killall scenario
if (this.parent != null) {
//send terminating to the parent. So that it will push terminating to its children
- ApplicationBuilder.handleGroupTerminatingEvent(this.appId, childId, instanceId);
+ ApplicationBuilder.handleGroupTerminatingEvent(this.appId, this.id, instanceId);
} else {
//if it is an application, send terminating event individually for children
sendTerminatingEventOnNotification(terminationList, childId, true, instanceId);
[3/7] stratos git commit: fixing startup of VM upon termination
Posted by re...@apache.org.
fixing startup of VM upon termination
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/681f5979
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/681f5979
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/681f5979
Branch: refs/heads/4.1.0-test
Commit: 681f5979988d375eec79c9d34375bf29d3deba27
Parents: fb8f23e
Author: reka <rt...@gmail.com>
Authored: Mon Dec 8 23:47:06 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 11 19:20:13 2014 +0530
----------------------------------------------------------------------
.../component/ParentComponentMonitor.java | 57 +++++++++++---------
1 file changed, 32 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/681f5979/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 9f6ca75..91c3724 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
@@ -40,7 +40,6 @@ import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
import org.apache.stratos.autoscaler.monitor.Monitor;
import org.apache.stratos.autoscaler.monitor.MonitorFactory;
import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
import org.apache.stratos.messaging.domain.applications.GroupStatus;
@@ -105,7 +104,7 @@ public abstract class ParentComponentMonitor extends Monitor {
MonitorNotFoundException {
//start the first dependency
List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
- getStartAbleDependencies();
+ getStarAbleDependencies();
startDependency(applicationContexts, instanceId);
}
@@ -123,6 +122,23 @@ public abstract class ParentComponentMonitor extends Monitor {
}
/**
+ * This will start the parallel dependencies at once from the top level.
+ * it will get invoked when the monitor starts up only.
+ */
+ public void startDependency(ParentComponent component) {
+ //start the first dependency
+ List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
+ getStarAbleDependencies();
+ Collection<Instance> contexts = component.getInstanceIdToInstanceContextMap().values();
+ //traversing through all the Instance context and start them
+ List<String> instanceIds = new ArrayList<String>();
+ for (Instance context : contexts) {
+ instanceIds.add(context.getInstanceId());
+ }
+ startDependency(applicationContexts, instanceIds);
+ }
+
+ /**
* This will get invoked based on the activation event of its one of the child
*
* @param id alias/clusterId of which receive the activated event
@@ -136,27 +152,28 @@ public abstract class ParentComponentMonitor extends Monitor {
return startup;
}
+ public boolean startAllChildrenDependency(ParentComponent component, String instanceId)
+ throws TopologyInConsistentException {
+ /*List<ApplicationChildContext> applicationContexts = this.startupDependencyTree
+ .findAllChildrenOfAppContext(id);*/
+ return false;//startDependency(applicationContexts, instanceId);
+ }
+
/**
* This will start the parallel dependencies at once from the top level
* by traversing to find the terminated dependencies.
* it will get invoked when start a child monitor on termination of a sub tree
*/
-
- public void startDependencyOnTermination(String instanceId) throws TopologyInConsistentException,
- MonitorNotFoundException, PolicyValidationException, PartitionValidationException {
-
+ public void startDependencyOnTermination() throws TopologyInConsistentException {
//start the first dependency which went to terminated
List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
- getStarAbleDependenciesByTermination(this, instanceId);
+ getStarAbleDependenciesByTermination();
for(ApplicationChildContext context : applicationContexts) {
if(context instanceof GroupChildContext) {
GroupMonitor groupMonitor = (GroupMonitor) this.aliasToActiveMonitorsMap.
get(context.getId());
- groupMonitor.createInstanceAndStartDependencyOnScaleup(instanceId);
} else if(context instanceof ClusterChildContext) {
- VMClusterMonitor clusterMonitor = (VMClusterMonitor) this.
- aliasToActiveMonitorsMap.get(context.getId());
- clusterMonitor.createClusterInstanceOnScaleUp(instanceId);
+
}
}
@@ -185,7 +202,9 @@ public abstract class ParentComponentMonitor extends Monitor {
startMonitor(this, context, instanceIds);
}
}
+
return true;
+
}
/**
@@ -284,7 +303,7 @@ public abstract class ParentComponentMonitor extends Monitor {
//handling the killall scenario
if (this.parent != null) {
//send terminating to the parent. So that it will push terminating to its children
- ApplicationBuilder.handleGroupTerminatingEvent(this.appId, this.id, instanceId);
+ ApplicationBuilder.handleGroupTerminatingEvent(this.appId, childId, instanceId);
} else {
//if it is an application, send terminating event individually for children
sendTerminatingEventOnNotification(terminationList, childId, true, instanceId);
@@ -363,18 +382,10 @@ public abstract class ParentComponentMonitor extends Monitor {
(parentContexts.isEmpty() || parentsTerminated || allParentsActive)) {
//Find the non existent monitor by traversing dependency tree
try {
- this.startDependencyOnTermination(instanceId);
+ this.startDependencyOnTermination();
} catch (TopologyInConsistentException e) {
//TODO revert the siblings and notify parent, change a flag for reverting/un-subscription
log.error("Error while starting the monitor upon termination" + e);
- } catch (MonitorNotFoundException e) {
- //TODO revert the siblings and notify parent, change a flag for reverting/un-subscription
- log.error("Error while starting the monitor by relevant monitor not found" + e);
- } catch (PartitionValidationException e) {
- log.error("Error while starting the monitor upon termination by partition validation failed" + e);
- } catch (PolicyValidationException e) {
- log.error("Error while starting the monitor upon termination by policy validation failed" + e);
-
}
} else {
ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().
@@ -551,10 +562,6 @@ public abstract class ParentComponentMonitor extends Monitor {
return aliasToActiveMonitorsMap;
}
- public Monitor getMonitor(String monitorId) {
- return this.aliasToActiveMonitorsMap.get(monitorId);
- }
-
public void setAliasToActiveMonitorsMap(Map<String, Monitor> aliasToActiveMonitorsMap) {
this.aliasToActiveMonitorsMap = aliasToActiveMonitorsMap;
}