Repository: stratos
Updated Branches:
  refs/heads/master 2a3bfc436 -> 0e2e70402


fixing faulty member case for multiple dependent cluster


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

Branch: refs/heads/master
Commit: 0e2e704021663594e2c520eec685f034b709b7bf
Parents: 2a3bfc4
Author: reka <[email protected]>
Authored: Mon Nov 10 15:11:30 2014 +0530
Committer: reka <[email protected]>
Committed: Mon Nov 10 15:11:30 2014 +0530

----------------------------------------------------------------------
 .../applications/topic/ApplicationBuilder.java  | 16 +++++------
 .../stratos/autoscaler/monitor/Monitor.java     |  8 ++++++
 .../monitor/application/ApplicationMonitor.java | 28 +++++++++++++++-----
 .../monitor/cluster/AbstractClusterMonitor.java |  4 +--
 .../autoscaler/monitor/group/GroupMonitor.java  |  6 -----
 5 files changed, 39 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0e2e7040/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 d3c4c6f..d0ff90b 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
@@ -96,7 +96,7 @@ public class ApplicationBuilder {
             updateApplicationMonitor(appId, status);
             ApplicationHolder.persistApplication(application);
             //publishing data
-            ApplicationsEventPublisher.sendApplicationActivatedEvent(appId);
+            //TODO 
ApplicationsEventPublisher.sendApplicationActivatedEvent(appId);
         } else {
             log.warn(String.format("Application state transition is not valid: 
[application-id] %s " +
                     " [current-status] %s [status-requested] %s", appId, 
application.getStatus(), status));
@@ -131,7 +131,7 @@ public class ApplicationBuilder {
                 updateApplicationMonitor(appId, status);
                 ApplicationHolder.persistApplication(application);
                 //publishing data
-                
ApplicationsEventPublisher.sendApplicationActivatedEvent(appId);
+                //TODO 
ApplicationsEventPublisher.sendApplicationActivatedEvent(appId);
             } else {
                 log.warn(String.format("Application state transition is not 
valid: [application-id] %s " +
                         " [current-status] %s [status-requested] %s", appId, 
application.getStatus(), status));
@@ -168,7 +168,7 @@ public class ApplicationBuilder {
                 //Removing the application from memory and registry
                 ApplicationHolder.removeApplication(appId);
                 log.info("Application is removed: [application-id] " + appId);
-                
ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId);
+                //TODO 
ApplicationsEventPublisher.sendApplicationTerminatedEvent(appId);
             } else {
                 log.warn(String.format("Application state transition is not 
valid: [application-id] %s " +
                         " [current-status] %s [status-requested] %s", appId, 
application.getStatus(), status));
@@ -244,7 +244,7 @@ public class ApplicationBuilder {
             //updating the groupMonitor
             updateGroupMonitor(appId, groupId, status);
             //publishing data
-            ApplicationsEventPublisher.sendGroupTerminatedEvent(appId, 
groupId);
+            //TODO ApplicationsEventPublisher.sendGroupTerminatedEvent(appId, 
groupId);
         } else {
             log.warn(String.format("Group state transition is not valid: 
[group-id] %s [current-status] %s " +
                     " [requested-status] %s", groupId, group.getStatus(), 
status));
@@ -286,7 +286,7 @@ public class ApplicationBuilder {
             //updating the groupMonitor
             updateGroupMonitor(appId, groupId, status);
             //publishing data
-            ApplicationsEventPublisher.sendGroupActivatedEvent(appId, groupId);
+            //TODO ApplicationsEventPublisher.sendGroupActivatedEvent(appId, 
groupId);
         } else {
             log.warn(String.format("Group state transition is not valid: 
[group-id] %s [current-status] %s " +
                     " [requested-status] %s", groupId, group.getStatus(), 
status));
@@ -328,7 +328,7 @@ public class ApplicationBuilder {
             //updating the groupMonitor
             updateGroupMonitor(appId, groupId, status);
             //publishing data
-            ApplicationsEventPublisher.sendGroupCreatedEvent(appId, groupId);
+            //TODO ApplicationsEventPublisher.sendGroupCreatedEvent(appId, 
groupId);
         } else {
             log.warn("Group state transition is not valid: [group-id] " + 
groupId + " [current-state] " + group.getStatus()
                     + "[requested-state] " + status);
@@ -371,7 +371,7 @@ public class ApplicationBuilder {
             //updating the groupMonitor
             updateGroupMonitor(appId, groupId, status);
             //publishing data
-            ApplicationsEventPublisher.sendGroupInActivateEvent(appId, 
groupId);
+            //TODO ApplicationsEventPublisher.sendGroupInActivateEvent(appId, 
groupId);
         } else {
             log.warn("Group state transition is not valid: [group-id] " + 
groupId + " [current-state] " + group.getStatus()
                     + "[requested-state] " + status);
@@ -413,7 +413,7 @@ public class ApplicationBuilder {
                 //updating the groupMonitor
                 updateGroupMonitor(appId, groupId, status);
                 //publishing data
-                ApplicationsEventPublisher.sendGroupTerminatingEvent(appId, 
groupId);
+                //TODO 
ApplicationsEventPublisher.sendGroupTerminatingEvent(appId, groupId);
             } else {
                 log.warn("Group state transition is not valid: [group-id] " + 
groupId + " [current-state] " + group.getStatus()
                         + "[requested-state] " + status);

http://git-wip-us.apache.org/repos/asf/stratos/blob/0e2e7040/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 791f7a0..a4ec80e 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
@@ -105,4 +105,12 @@ public abstract class Monitor implements EventHandler {
         }
         return hasInDepChild;
     }
+
+    public Map<String, Monitor> getAliasToInActiveMonitorsMap() {
+        return this.aliasToInactiveMonitorsMap;
+    }
+
+    public void setAliasToInActiveMonitorsMap(Map<String, Monitor> 
aliasToInActiveMonitorsMap) {
+        this.aliasToInactiveMonitorsMap = aliasToInActiveMonitorsMap;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/0e2e7040/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
index abe64ba..d91477f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
@@ -22,10 +22,10 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
-import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor;
+import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.ApplicationStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
@@ -33,8 +33,8 @@ import 
org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
 import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
-import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
+import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
 
 import java.util.Collection;
@@ -107,9 +107,11 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
      */
     public Monitor findGroupMonitorWithId(String groupId) {
         Monitor monitor;
-        monitor = findGroupMonitor(groupId, aliasToActiveMonitorsMap.values());
+        //searching within active monitors
+        monitor = findGroupMonitor(groupId, aliasToActiveMonitorsMap.values(), 
true);
         if (monitor == null) {
-            monitor = findGroupMonitor(groupId, 
aliasToInactiveMonitorsMap.values());
+            //searching within inActive monitors
+            monitor = findGroupMonitor(groupId, 
aliasToInactiveMonitorsMap.values(), false);
         }
         return monitor;
     }
@@ -122,15 +124,18 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
      * @param monitors the group monitors found in the app monitor
      * @return the found GroupMonitor
      */
-    private Monitor findGroupMonitor(String id, Collection<Monitor> monitors) {
+    private Monitor findGroupMonitor(String id, Collection<Monitor> monitors, 
boolean active) {
         for (Monitor monitor : monitors) {
             // check if alias is equal, if so, return
             if (monitor.getId().equals(id)) {
                 return monitor;
             } else {
                 // check if this Group has nested sub Groups. If so, traverse 
them as well
-                if (monitor.getAliasToActiveMonitorsMap() != null) {
-                    return findGroupMonitor(id, 
monitor.getAliasToActiveMonitorsMap().values());
+                if (monitor.getAliasToActiveMonitorsMap() != null && active) {
+                    return findGroupMonitor(id, 
monitor.getAliasToActiveMonitorsMap().values(), active);
+                } else if (monitor.getAliasToInActiveMonitorsMap() != null && 
!active) {
+                    return findGroupMonitor(id, 
monitor.getAliasToInActiveMonitorsMap().values(), active);
+
                 }
             }
         }
@@ -166,6 +171,15 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
             //mark the child monitor as inActive in the map
             this.markMonitorAsInactive(id);
 
+        } else if (status1 == ClusterStatus.Created || status1 == 
GroupStatus.Created) {
+            if (this.aliasToInactiveMonitorsMap.containsKey(id)) {
+                this.aliasToInactiveMonitorsMap.remove(id);
+            }
+            if (this.status == ApplicationStatus.Terminating) {
+                StatusChecker.getInstance().onChildStatusChange(id, this.id, 
this.appId);
+            } else {
+                onChildTerminatedEvent(id);
+            }
         } else if (status1 == ClusterStatus.Terminated || status1 == 
GroupStatus.Terminated) {
             //Check whether all dependent goes Terminated and then start them 
in parallel.
             if(this.aliasToInactiveMonitorsMap.containsKey(id)) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/0e2e7040/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 48db321..1dd68ac 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
@@ -235,11 +235,11 @@ public abstract class AbstractClusterMonitor extends 
Monitor implements Runnable
                 log.info("[Cluster] " + clusterId + "is not notifying the 
parent, " +
                         "since it is identified as the independent unit");
 
-            } else if (status == ClusterStatus.Terminating) {
+            /*} else if (status == ClusterStatus.Terminating) {
                 // notify parent
                 log.info("[Cluster] " + clusterId + " is not notifying the 
parent, " +
                         "since it is in Terminating State");
-
+*/
             } else {
                 
MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, this.status, 
this.clusterId);
             }

http://git-wip-us.apache.org/repos/asf/stratos/blob/0e2e7040/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
index 8f355af..b39be0a 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
@@ -160,17 +160,11 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
         if (status == GroupStatus.Inactive && !this.hasDependent) {
             log.info("[Group] " + this.id + "is not notifying the parent, " +
                     "since it is identified as the independent unit");
-
-        /*} else if (status == GroupStatus.Terminating) {
-            log.info("[Group] " + this.id + " is not notifying the parent, " +
-                    "since it is in Terminating State");
-*/
         } else {
             // notify parent
             log.info("[Group] " + this.id + "is notifying the [parent] " + 
this.parent.getId());
             MonitorStatusEventBuilder.handleGroupStatusEvent(this.parent, 
this.status, this.id);
         }
-        //}
         //notify the children about the state change
         MonitorStatusEventBuilder.notifyChildren(this, new 
GroupStatusEvent(status, getId()));
     }

Reply via email to