Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping 305b287b7 -> a8c72790d


fixing monitors start up time issue and NPE


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

Branch: refs/heads/4.0.0-grouping
Commit: aab7f1895e98987943ce23d859a4e7667942f56e
Parents: 718445a
Author: reka <[email protected]>
Authored: Wed Sep 24 13:21:32 2014 +0530
Committer: reka <[email protected]>
Committed: Wed Sep 24 13:21:32 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/grouping/DependencyBuilder.java  | 10 ++---
 .../AutoscalerTopologyEventReceiver.java        | 26 +++++++-----
 .../stratos/autoscaler/monitor/Monitor.java     | 43 +++++++++++---------
 3 files changed, 43 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/aab7f189/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java
index a021ce3..54b4cf8 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java
@@ -59,16 +59,16 @@ public class DependencyBuilder {
             }
         }
         //TODO adding all the missed groups or clusters as the top child to 
the list
-        for(Group group: component.getAliasToGroupMap().values()) {
-            if(!startup.contains(group.getAlias())) {
-                startup.add(group.getAlias());
+        for(String grpAlias: component.getAliasToGroupMap().keySet()) {
+            if(!startup.contains("group." + grpAlias)) {
+                startup.add("group." + grpAlias);
             }
         }
 
         for(Set<String> clusterIds: 
component.getServiceNameToClusterIdsMap().values()) {
             for (String clusterId : clusterIds) {
-                if(!startup.contains(clusterId)) {
-                    startup.add(clusterId);
+                if(!startup.contains("cartridge." + clusterId)) {
+                    startup.add("cartridge." + clusterId);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/aab7f189/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
index 238d64e..f056de2 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -52,6 +52,7 @@ public class AutoscalerTopologyEventReceiver implements 
Runnable {
 
     private TopologyEventReceiver topologyEventReceiver;
     private boolean terminated;
+    private boolean topologyInitialized;
 
     public AutoscalerTopologyEventReceiver() {
         this.topologyEventReceiver = new TopologyEventReceiver();
@@ -89,10 +90,14 @@ public class AutoscalerTopologyEventReceiver implements 
Runnable {
             @Override
             protected void onEvent(Event event) {
                 try {
-                    TopologyManager.acquireReadLock();
-                   // for (Application application : 
TopologyManager.getTopology().getApplications()) {
-                   //     startApplicationMonitor(application);
-                   // }
+                    if(!topologyInitialized) {
+                        topologyInitialized = true;
+                        TopologyManager.acquireReadLock();
+                        for (Application application : 
TopologyManager.getTopology().getApplications()) {
+                            startApplicationMonitor(application);
+                        }
+                    }
+
                 } catch (Exception e) {
                     log.error("Error processing event", e);
                 } finally {
@@ -495,12 +500,7 @@ public class AutoscalerTopologyEventReceiver implements 
Runnable {
             ApplicationMonitor applicationMonitor = null;
             int retries = 5;
             boolean success = false;
-            do {
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e1) {
-                }
-
+            while (!success && retries != 0) {
                 try {
                     applicationMonitor = 
AutoscalerUtil.getApplicationMonitor(application);
                     success = true;
@@ -510,9 +510,13 @@ public class AutoscalerTopologyEventReceiver implements 
Runnable {
                                     application.getId();
                     log.debug(msg, e);
                     retries--;
+                    try {
+                        Thread.sleep(5000);
+                    } catch (InterruptedException e1) {
+                    }
 
                 }
-            } while (!success && retries != 0);
+            }
 
             if (applicationMonitor == null) {
                 String msg = "Application monitor creation failed, even after 
retrying for 5 times, "

http://git-wip-us.apache.org/repos/asf/stratos/blob/aab7f189/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 6b299ef..dfaf720 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
@@ -53,6 +53,8 @@ public abstract class Monitor extends Observable implements 
Observer {
     protected ParentBehavior component;
 
     public Monitor(ParentBehavior component) {
+        groupMonitors = new HashMap<String, GroupMonitor>();
+        abstractClusterMonitors = new HashMap<String, 
AbstractClusterMonitor>();
         this.component = component;
         startDependency();
     }
@@ -120,21 +122,19 @@ public abstract class Monitor extends Observable 
implements Observer {
         if(!preOrderTraverse.isEmpty()) {
             String dependency = preOrderTraverse.poll();
             if (dependency.contains("group")) {
-                startGroupMonitor(this, dependency, component);
+                startGroupMonitor(this, dependency.substring(6), component);
             } else if (dependency.contains("cartridge")) {
-
-                Set<String> clusterIds = component.getClusterIds(dependency);
-                for (String clusterId : clusterIds) {
+                /*String clusterId = 
component.findClusterId(dependency.substring(10));
                     Cluster cluster = null;
                     TopologyManager.acquireReadLock();
+
                     cluster = 
TopologyManager.getTopology().getService(dependency).getCluster(clusterId);
                     TopologyManager.releaseReadLock();
                     if (cluster != null) {
                         startClusterMonitor(cluster);
                     } else {
                         //TODO throw exception since Topology is inconsistent
-                    }
-                }
+                    }*/
             }
         } else {
             //all the groups/clusters have been started and waiting for 
activation
@@ -200,12 +200,7 @@ public abstract class Monitor extends Observable 
implements Observer {
             ClusterMonitor monitor = null;
             int retries = 5;
             boolean success = false;
-            do {
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e1) {
-                }
-
+            while (!success && retries != 0) {
                 try {
                     monitor = AutoscalerUtil.getClusterMonitor(cluster);
                     success = true;
@@ -214,13 +209,22 @@ public abstract class Monitor extends Observable 
implements Observer {
                     String msg = "Cluster monitor creation failed for cluster: 
" + cluster.getClusterId();
                     log.debug(msg, e);
                     retries--;
+                    try {
+                        Thread.sleep(5000);
+                    } catch (InterruptedException e1) {
+                    }
 
                 } catch (PartitionValidationException e) {
                     String msg = "Cluster monitor creation failed for cluster: 
" + cluster.getClusterId();
                     log.debug(msg, e);
                     retries--;
+                    try {
+                        Thread.sleep(5000);
+                    } catch (InterruptedException e1) {
+                    }
                 }
-            } while (!success && retries != 0);
+
+            }
 
             if (monitor == null) {
                 String msg = "Cluster monitor creation failed, even after 
retrying for 5 times, "
@@ -256,12 +260,7 @@ public abstract class Monitor extends Observable 
implements Observer {
             GroupMonitor monitor = null;
             int retries = 5;
             boolean success = false;
-            do {
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e1) {
-                }
-
+            while (!success && retries != 0) {
                 try {
                     monitor = 
AutoscalerUtil.getGroupMonitor(group.getGroup(dependency));
                     monitor.addObserver(parent);
@@ -271,9 +270,13 @@ public abstract class Monitor extends Observable 
implements Observer {
                     String msg = "Group monitor creation failed for group: " + 
dependency;
                     log.debug(msg, e);
                     retries--;
+                    try {
+                        Thread.sleep(5000);
+                    } catch (InterruptedException e1) {
+                    }
 
                 }
-            } while (!success && retries != 0);
+            }
 
             if (monitor == null) {
                 String msg = "Group monitor creation failed, even after 
retrying for 5 times, "

Reply via email to