Repository: stratos
Updated Branches:
  refs/heads/master 3ac0be5cb -> b21f3ec93


supporting cluster Inactive with app InActive


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

Branch: refs/heads/master
Commit: e325e9adda90d50a9d6780d5f4d6a4c49e0d0b43
Parents: 0b7e94e
Author: reka <[email protected]>
Authored: Sun Dec 7 22:06:02 2014 +0530
Committer: reka <[email protected]>
Committed: Sun Dec 7 22:10:30 2014 +0530

----------------------------------------------------------------------
 .../applications/dependency/DependencyTree.java |  7 +++--
 .../applications/topic/ApplicationBuilder.java  | 29 ++++++++++++++++++++
 .../topic/ApplicationsEventPublisher.java       |  2 +-
 .../publisher/ClusterStatusEventPublisher.java  |  4 ++-
 .../monitor/cluster/AbstractClusterMonitor.java |  6 ++--
 .../monitor/cluster/VMClusterMonitor.java       | 14 ++++++++++
 .../cluster/ClusterStatusInActiveProcessor.java |  9 +-----
 .../cluster/ClusterStatusProcessor.java         |  2 +-
 .../ClusterStatusTerminatedProcessor.java       |  2 +-
 .../group/GroupStatusInActiveProcessor.java     |  5 +++-
 10 files changed, 62 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
index d0e35a7..8ca1733 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java
@@ -199,8 +199,6 @@ public class DependencyTree {
     public List<ApplicationChildContext> getTerminationDependencies(String id) 
{
         List<ApplicationChildContext> allChildrenOfAppContext = new 
ArrayList<ApplicationChildContext>();
         ApplicationChildContext applicationContext = 
findApplicationContextWithIdInPrimaryTree(id);
-        //adding the terminated one to the list
-        allChildrenOfAppContext.add(applicationContext);
         if (getTerminationBehavior() == 
TerminationBehavior.TERMINATE_DEPENDENT) {
             //finding the ApplicationContext of the given id
             //finding all the children of the found application context
@@ -213,6 +211,11 @@ public class DependencyTree {
                     allChildrenOfAppContext);
 
         }
+        //If only particular cluster, then no need to terminated it.
+        if(allChildrenOfAppContext.size() > 0) {
+            //adding the terminated one to the list
+            allChildrenOfAppContext.add(applicationContext);
+        }
         //return empty for the kill-none case, what ever returns here will be 
killed in
         return allChildrenOfAppContext;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/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 27457f4..20c92a1 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
@@ -147,6 +147,35 @@ public class ApplicationBuilder {
         }
     }
 
+    public static void handleApplicationInstanceInactivateEvent(String appId, 
String instanceId) {
+        if (log.isDebugEnabled()) {
+            log.debug("Handling application Inactive event: [application-id] " 
+ appId);
+        }
+
+        Applications applications = ApplicationHolder.getApplications();
+        Application application = applications.getApplication(appId);
+        //update the status of the Group
+        if (application == null) {
+            log.warn(String.format("Application does not exist: 
[application-id] %s",
+                    appId));
+            return;
+        }
+
+        ApplicationStatus status = ApplicationStatus.Inactive;
+        ApplicationInstance context = 
application.getInstanceContexts(instanceId);
+        if (context.isStateTransitionValid(status)) {
+            //setting the status, persist and publish
+            application.setStatus(status, instanceId);
+            updateApplicationMonitor(appId, status, instanceId);
+            ApplicationHolder.persistApplication(application);
+            
ApplicationsEventPublisher.sendApplicationInstanceActivatedEvent(appId, 
instanceId);
+        } else {
+            log.warn(String.format("Application state transition is not valid: 
[application-id] %s " +
+                            " [instance-id] %s [current-status] %s 
[status-requested] %s",
+                    appId, instanceId, context.getStatus(), status));
+        }
+    }
+
     public static void handleApplicationUndeployed(String appId) {
         if (log.isDebugEnabled()) {
             log.debug("Handling application unDeployment for [application-id] 
" + appId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
index 305b4e7..4ecbbbe 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationsEventPublisher.java
@@ -92,7 +92,7 @@ public class ApplicationsEventPublisher {
 
     public static void sendApplicationInstanceActivatedEvent(String appId, 
String instanceId) {
         if (log.isInfoEnabled()) {
-            log.info("Publishing Application activated event for 
[application]: " + appId);
+            log.info("Publishing Application Inactivate event for 
[application]: " + appId);
         }
         ApplicationInstanceActivatedEvent applicationActivatedEvent =
                 new ApplicationInstanceActivatedEvent(appId, instanceId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
index ed968c5..be94547 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
@@ -200,7 +200,9 @@ public class ClusterStatusEventPublisher {
 
                     publishEvent(appStatusClusterTerminatedEvent);
                 } else {
-                    log.warn("Terminated is not in the possible state list of 
[cluster] " + clusterId);
+                    log.warn("Terminated is not in the possible state list for 
[ClusterInstance] " +
+                            clusterInstance.getInstanceId() + " of [cluster] " 
+
+                            clusterId + " as it is current state is " + 
clusterInstance.getStatus());
                 }
             }
         } finally {

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/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 edfe063..5710ef4 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
@@ -219,12 +219,12 @@ public abstract class AbstractClusterMonitor extends 
Monitor implements Runnable
         if(instance == null) {
             log.warn("The required cluster [instance] " + instanceId + " not 
found in the ClusterMonitor");
         } else {
-            if (instance.getStatus() == ClusterStatus.Inactive && 
!this.hasStartupDependents) {
+            /*if (instance.getStatus() == ClusterStatus.Inactive && 
!this.hasStartupDependents) {
                 log.info("[Cluster] " + clusterId + "is not notifying the 
parent, " +
                         "since it is identified as the independent unit");
-            } else {
+            } else {*/
                 
MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, status, 
this.clusterId, instanceId);
-            }
+            //}
         }
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index 90c12c4..9a4019c 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -286,6 +286,20 @@ public class VMClusterMonitor extends 
AbstractClusterMonitor {
                     };
                     monitoringRunnable.run();
                 }
+
+                for (final ClusterLevelPartitionContext partitionContext : 
instanceContext.getPartitionCtxts()) {
+                    Runnable monitoringRunnable = new Runnable() {
+                        @Override
+                        public void run() {
+                            obsoleteCheckFactHandle = 
AutoscalerRuleEvaluator.evaluate(
+                                    getObsoleteCheckKnowledgeSession(), 
obsoleteCheckFactHandle, partitionContext);
+                        }
+                    };
+
+                    monitoringRunnable.run();
+
+                }
+
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
index f0f2e9f..a6db835 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
@@ -79,14 +79,7 @@ public class ClusterStatusInActiveProcessor extends 
ClusterStatusProcessor {
             //send cluster In-Active event to cluster status topic
             
ClusterStatusEventPublisher.sendClusterInActivateEvent(monitor.getAppId(),
                     monitor.getServiceId(), clusterId, instanceId);
-        } /*else {
-            if (log.isInfoEnabled()) {
-                log.info("Publishing Cluster active event for [application]: "
-                        + monitor.getAppId() + " [cluster]: " + clusterId);
-            }
-            
//ClusterStatusEventPublisher.sendClusterActivatedEvent(monitor.getAppId(),
-              //                                          
monitor.getServiceId(), clusterId, instanceId);
-        }*/
+        }
         return clusterInActive;
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusProcessor.java
index bc167b2..6e0e80b 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusProcessor.java
@@ -21,7 +21,7 @@ package 
org.apache.stratos.autoscaler.status.processor.cluster;
 import org.apache.stratos.autoscaler.status.processor.StatusProcessor;
 
 /**
- * Created by reka on 11/25/14.
+ * This will process the cluster status upon member state changes
  */
 public abstract class ClusterStatusProcessor extends StatusProcessor {
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
index 2c433f8..45d6c2e 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
@@ -36,7 +36,7 @@ import 
org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
  * Cluster terminated checking processor.
  */
 public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
-    private static final Log log = 
LogFactory.getLog(ClusterStatusInActiveProcessor.class);
+    private static final Log log = 
LogFactory.getLog(ClusterStatusTerminatedProcessor.class);
     private ClusterStatusProcessor nextProcessor;
 
     @Override

http://git-wip-us.apache.org/repos/asf/stratos/blob/e325e9ad/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java
index e322a91..e4be4b5 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusInActiveProcessor.java
@@ -96,7 +96,10 @@ public class GroupStatusInActiveProcessor extends 
GroupStatusProcessor {
                 //send the in activation event
                 if (component instanceof Application) {
                     //send application activated event
-                    log.warn("Application can't be in in-active : " + appId);
+                    log.warn("Sending application instance in-active for 
[Application] " + appId +
+                    " [ApplicationInstance] " + instanceId);
+                    
ApplicationBuilder.handleApplicationInstanceInactivateEvent(appId, instanceId);
+
                     return true;
                     //ApplicationBuilder.handleApp(appId);
                 } else if (component instanceof Group) {

Reply via email to