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, "
