fixing evaluating the status
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ae257c16 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ae257c16 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ae257c16 Branch: refs/heads/docker-grouping-merge Commit: ae257c168a7b7590475d0f07a8cd7bda758bbaef Parents: fe4cced Author: reka <[email protected]> Authored: Thu Oct 30 20:13:25 2014 +0530 Committer: reka <[email protected]> Committed: Thu Oct 30 20:13:25 2014 +0530 ---------------------------------------------------------------------- .../AutoscalerTopologyEventReceiver.java | 1 + .../monitor/AbstractClusterMonitor.java | 10 ++++++++ .../monitor/cluster/ClusterMonitor.java | 3 ++- .../autoscaler/monitor/group/GroupMonitor.java | 14 ++++++---- .../status/checker/StatusChecker.java | 27 ++++++++++---------- 5 files changed, 36 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/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 b02b2c9..54a1461 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 @@ -174,6 +174,7 @@ public class AutoscalerTopologyEventReceiver implements Runnable { (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId); //changing the status in the monitor, will notify its parent monitor + clusterMonitor.setStop(true); clusterMonitor.setStatus(ClusterStatus.Created); } http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java index 8ec65c7..ac0871d 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java @@ -66,6 +66,8 @@ abstract public class AbstractClusterMonitor extends Monitor implements Runnable protected boolean hasFaultyMember = false; + protected boolean stop = false; + protected ClusterStatus status; //protected ParentComponentMonitor parent; @@ -274,4 +276,12 @@ abstract public class AbstractClusterMonitor extends Monitor implements Runnable public void setHasFaultyMember(boolean hasFaultyMember) { this.hasFaultyMember = hasFaultyMember; } + + public boolean isStop() { + return stop; + } + + public void setStop(boolean stop) { + this.stop = stop; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java index 67539ed..988f266 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java @@ -87,7 +87,8 @@ public class ClusterMonitor extends AbstractClusterMonitor { while (!isDestroyed()) { try { if (((this.status.getCode() <= ClusterStatus.Active.getCode()) || - (this.status == ClusterStatus.Inactive && !hasDependent)) && !this.hasFaultyMember) { + (this.status == ClusterStatus.Inactive && !hasDependent)) && !this.hasFaultyMember + && !stop) { if (log.isDebugEnabled()) { log.debug("Cluster monitor is running.. " + this.toString()); } http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/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 4a789bf..3623de9 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 @@ -73,6 +73,15 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler } else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) { onChildInActiveEvent(id); + } else if (status1 == ClusterStatus.Created || status1 == GroupStatus.Created) { + if(this.aliasToInActiveMonitorsMap.containsKey(id)) { + this.aliasToInActiveMonitorsMap.remove(id); + } + if (this.status == GroupStatus.Terminating) { + StatusChecker.getInstance().onChildStatusChange(id, this.id, this.appId); + } else { + onChildTerminatedEvent(id); + } } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) { //mark the child monitor as inActive in the map this.markMonitorAsInactive(id); @@ -84,15 +93,10 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler } else { log.warn("[monitor] " + id + " cannot be found in the inActive monitors list"); } - if (this.status == GroupStatus.Terminating || this.status == GroupStatus.Terminated) { StatusChecker.getInstance().onChildStatusChange(id, this.id, this.appId); log.info("Executing the un-subscription request for the [monitor] " + id); - } else { - onChildTerminatedEvent(id); - } - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/ae257c16/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java index a23e5bd..a742b89 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java @@ -331,7 +331,7 @@ public class StatusChecker { log.info("sending group created : " + parent.getUniqueIdentifier()); StatusEventPublisher.sendGroupCreatedEvent(appId, parent.getUniqueIdentifier()); } - } else if (groups.isEmpty() && clusterStatus == ClusterStatus.Terminating || + /*} else if (groups.isEmpty() && clusterStatus == ClusterStatus.Terminating || clusterData.isEmpty() && groupStatus == GroupStatus.Terminating || groupStatus == GroupStatus.Terminating && clusterStatus == ClusterStatus.Terminating) { if (parent instanceof Application) { @@ -340,7 +340,7 @@ public class StatusChecker { //send activation to the parent log.info("sending group terminating : " + parent.getUniqueIdentifier()); StatusEventPublisher.sendGroupTerminatingEvent(appId, parent.getUniqueIdentifier()); - } + }*/ } else if (groups.isEmpty() && clusterStatus == ClusterStatus.Created || clusterData.isEmpty() && groupStatus == GroupStatus.Created || groupStatus == GroupStatus.Created && clusterStatus == ClusterStatus.Created) { @@ -393,15 +393,15 @@ public class StatusChecker { groupActive = false; groupTerminated = false; groupCreated = groupCreated && true; - } else if (group.getStatus() == GroupStatus.Terminating) { - groupActive = false; - groupTerminated = false; - groupCreated = false; - status = GroupStatus.Terminating; - } } + if(groups == null || groups != null && groups.isEmpty()) { + groupActive = false; + groupTerminated = false; + groupCreated = false; + } + if (groupActive) { status = GroupStatus.Active; } else if (groupTerminated) { @@ -435,11 +435,6 @@ public class StatusChecker { clusterActive = false; clusterCreated = false; clusterTerminated = clusterTerminated && true; - } else if (cluster.getStatus() == ClusterStatus.Terminating) { - status = ClusterStatus.Terminating; - clusterActive = false; - clusterTerminated = false; - clusterCreated = false; } else if (cluster.getStatus() == ClusterStatus.Created) { clusterActive = false; clusterTerminated = false; @@ -447,6 +442,12 @@ public class StatusChecker { } } + if(clusterData == null || clusterData != null && clusterData.isEmpty()) { + clusterActive = false; + clusterTerminated = false; + clusterCreated = false; + } + if (clusterActive) { status = ClusterStatus.Active; } else if (clusterTerminated) {
