You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/12/12 11:11:23 UTC

[21/50] stratos git commit: fixing startup of VM upon termination

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/master
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;
     }