You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/10/28 07:43:45 UTC

git commit: fixing STRATOS-918

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping dd210b592 -> 097e884bd


fixing STRATOS-918


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

Branch: refs/heads/4.0.0-grouping
Commit: 097e884bd2e5c5942c3023eb5b5cbbf6d82331bf
Parents: dd210b5
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Oct 28 12:13:04 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Tue Oct 28 12:13:04 2014 +0530

----------------------------------------------------------------------
 .../topology/AutoscalerTopologyEventReceiver.java      | 13 +++++++++++++
 1 file changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/097e884b/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 9109d50..e5bbd55 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
@@ -27,6 +27,7 @@ import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import org.apache.stratos.autoscaler.exception.TerminationException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
+import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.ApplicationMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor;
@@ -364,11 +365,13 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
 //                        List<String> clusters = appMonitor.
 //                                findClustersOfApplication(applicationUndeployedEvent.getApplicationId());
 
+                        boolean clusterMonitorsFound = false;
                         for (ClusterDataHolder clusterData : clusterDataHolders) {
                             //stopping the cluster monitor and remove it from the AS
                             ClusterMonitor clusterMonitor =
                                     ((ClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterData.getClusterId()));
                             if (clusterMonitor != null) {
+                                clusterMonitorsFound = true;
                                 clusterMonitor.setDestroyed(true);
                                 clusterMonitor.terminateAllMembers();
                                 clusterMonitor.setStatus(ClusterStatus.Terminating);
@@ -377,9 +380,19 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
                             }
                         }
 
+                        // if by any chance, the cluster monitors have failed, we still need to undeploy this application
+                        // hence, check if the Cluster Monitors are not found and send the Application Terminated event
+                        if (!clusterMonitorsFound) {
+                            StatusEventPublisher.sendApplicationTerminatedEvent(
+                                    applicationUndeployedEvent.getApplicationId(), clusterDataHolders);
+                        }
+
                     } else {
                         log.warn("Application Monitor cannot be found for the undeployed [application] "
                                 + applicationUndeployedEvent.getApplicationId());
+                        // send the App Terminated event to cleanup
+                        StatusEventPublisher.sendApplicationTerminatedEvent(
+                                applicationUndeployedEvent.getApplicationId(), clusterDataHolders);
                     }
 
                 } finally {