Repository: stratos
Updated Branches:
  refs/heads/master a39e8e0a6 -> d5f508620


fixing acting upon termination issue


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

Branch: refs/heads/master
Commit: d5f508620a9aa2935b446e80b01adf6e844247e1
Parents: 5e79bbf
Author: reka <[email protected]>
Authored: Wed Apr 29 00:05:05 2015 +0530
Committer: reka <[email protected]>
Committed: Wed Apr 29 00:05:46 2015 +0530

----------------------------------------------------------------------
 .../autoscaler/monitor/component/ApplicationMonitor.java |  3 ++-
 .../autoscaler/monitor/component/GroupMonitor.java       | 11 ++++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d5f50862/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index 072ffbb..2a99203 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -283,7 +283,8 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
 
             ApplicationInstance instance = (ApplicationInstance) 
instanceIdToInstanceMap.get(instanceId);
             if (instance != null) {
-                if (this.isTerminating()) {
+                if (isTerminating() || instance.getStatus() == 
ApplicationStatus.Terminating ||
+                        instance.getStatus() == ApplicationStatus.Terminated) {
                     
ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(this.id,
                             appId, instanceId);
                 } else {

http://git-wip-us.apache.org/repos/asf/stratos/blob/d5f50862/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index 980503f..5e49e13 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -410,8 +410,7 @@ public class GroupMonitor extends ParentComponentMonitor {
             markInstanceAsTerminating(childId, instanceId);
 
         } else if (status1 == ClusterStatus.Terminated || status1 == 
GroupStatus.Terminated) {
-            //Verifying whether all the minimum no of instances of child
-            // became active to take next action
+            //Act upon child instance termination
             onTerminationOfInstance(childId, instanceId);
         }
     }
@@ -423,14 +422,20 @@ public class GroupMonitor extends ParentComponentMonitor {
 
         GroupInstance instance = (GroupInstance) 
instanceIdToInstanceMap.get(instanceId);
         if (instance != null) {
+            // If this parent instance is terminating, then based on child 
notification,
+            // it has to decide its state
             if (instance.getStatus() == GroupStatus.Terminating ||
                     instance.getStatus() == GroupStatus.Terminated) {
                 
ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().process(id,
                         appId, instanceId);
             } else {
+                //Checking whether the child who notified is still active.
+                // If it is active(scale down case), no need to act upon it.
+                // Otherwise act upon Termination and see whether it is 
required to start
+                // instance again based on termination behavior
                 boolean active = verifyGroupStatus(childId, instanceId, 
GroupStatus.Active);
                 if (!active) {
-                    onTerminationOfInstance(childId, instanceId);
+                    onChildTerminatedEvent(childId, instanceId);
                 } else {
                     log.info("[Group Instance] " + instanceId + " is still 
active upon termination" +
                             " of the [child] " + childId);

Reply via email to