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 <[email protected]> Authored: Thu Dec 11 19:19:49 2014 +0530 Committer: reka <[email protected]> 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;
