You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/12/02 18:59:01 UTC

[2/3] stratos git commit: fixing processor issue while calulating status of group

fixing processor issue while calulating status of group


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

Branch: refs/heads/master
Commit: 0c5d4caa11d7ca9c9a498a32d369b563a395fa41
Parents: a8ed191
Author: reka <rt...@gmail.com>
Authored: Tue Dec 2 22:38:54 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Dec 2 23:28:17 2014 +0530

----------------------------------------------------------------------
 .../application/MonitorNotFoundException.java   | 56 ++++++++++++++++++++
 .../ParentMonitorNotFoundException.java         | 56 --------------------
 .../autoscaler/monitor/EventHandler.java        |  5 +-
 .../monitor/component/ApplicationMonitor.java   |  6 +--
 .../monitor/component/GroupMonitor.java         | 21 ++++----
 .../component/ParentComponentMonitor.java       | 25 ++++-----
 .../builder/MonitorStatusEventBuilder.java      | 11 ++--
 .../group/GroupStatusActiveProcessor.java       | 12 ++---
 .../group/GroupStatusInActiveProcessor.java     |  4 +-
 .../group/GroupStatusProcessorChain.java        |  9 ++++
 .../group/GroupStatusTerminatedProcessor.java   |  7 ++-
 .../group/GroupStatusTerminatingProcessor.java  | 11 ++--
 12 files changed, 113 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java
new file mode 100644
index 0000000..325b825
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/MonitorNotFoundException.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.autoscaler.exception.application;
+
+/**
+ * This will throw when required monitor not found
+ */
+public class MonitorNotFoundException extends Exception{
+    private static final long serialVersionUID = -9163807860189126883L;
+    private String message;
+
+    public MonitorNotFoundException(final String message, final Exception exception) {
+
+        super(message, exception);
+        this.setMessage(message);
+
+    }
+
+    public MonitorNotFoundException(final Exception exception) {
+
+        super(exception);
+
+    }
+
+    public MonitorNotFoundException(final String msg) {
+
+        super(msg);
+        this.setMessage(msg);
+
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java
deleted file mode 100644
index e5e00cd..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/application/ParentMonitorNotFoundException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.autoscaler.exception.application;
-
-/**
- * This will throw when required monitor not found
- */
-public class ParentMonitorNotFoundException extends Exception{
-    private static final long serialVersionUID = -9163807860189126883L;
-    private String message;
-
-    public ParentMonitorNotFoundException(final String message, final Exception exception) {
-
-        super(message, exception);
-        this.setMessage(message);
-
-    }
-
-    public ParentMonitorNotFoundException(final Exception exception) {
-
-        super(exception);
-
-    }
-
-    public ParentMonitorNotFoundException(final String msg) {
-
-        super(msg);
-        this.setMessage(msg);
-
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
index bf65eb4..ca105de 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
@@ -18,8 +18,7 @@
  */
 package org.apache.stratos.autoscaler.monitor;
 
-import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException;
-import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
+import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 
@@ -40,7 +39,7 @@ public interface EventHandler {
      * @param statusEvent
      */
     public abstract void onParentStatusEvent(MonitorStatusEvent statusEvent) throws
-                                        ParentMonitorNotFoundException;
+            MonitorNotFoundException;
 
     /**
      * Triggered when a scaling event is received from a child.

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 990d482..c4d73e8 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
@@ -25,7 +25,7 @@ import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import org.apache.stratos.autoscaler.context.application.ApplicationInstanceContext;
 import org.apache.stratos.autoscaler.context.partition.network.ApplicationLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
-import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException;
+import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
@@ -112,7 +112,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
         //notify the children about the state change
         try {
             MonitorStatusEventBuilder.notifyChildren(this, new ApplicationStatusEvent(status, appId, instanceId));
-        } catch (ParentMonitorNotFoundException e) {
+        } catch (MonitorNotFoundException e) {
             log.error("Error while notifying the children from [application] " + appId, e);
             //TODO revert siblings
         }
@@ -236,7 +236,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
 
     public void createInstanceOnBurstingForApplication() throws TopologyInConsistentException,
             PolicyValidationException,
-            ParentMonitorNotFoundException {
+            MonitorNotFoundException {
         Application application = ApplicationHolder.getApplications().getApplication(appId);
         if (application == null) {
             String msg = "Application cannot be found in the Topology.";

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 b2b6697..96a1112 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
@@ -29,7 +29,7 @@ import org.apache.stratos.autoscaler.context.AutoscalerContext;
 import org.apache.stratos.autoscaler.context.group.GroupInstanceContext;
 import org.apache.stratos.autoscaler.context.partition.network.GroupLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
-import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException;
+import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent;
@@ -45,7 +45,6 @@ import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.applications.Group;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
-import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
 import org.apache.stratos.messaging.domain.instance.GroupInstance;
 import org.apache.stratos.messaging.domain.instance.Instance;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
@@ -168,7 +167,7 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
         //notify the children about the state change
         try {
             MonitorStatusEventBuilder.notifyChildren(this, new GroupStatusEvent(status, this.id, instanceId));
-        } catch (ParentMonitorNotFoundException e) {
+        } catch (MonitorNotFoundException e) {
             log.error("Error while notifying the children from the [group] " + this.id, e);
             //TODO revert siblings
         }
@@ -184,20 +183,20 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
             onChildActivatedEvent(id, instanceId);
 
         } else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
-            this.markMonitorAsInactive(id);
+            this.markMonitorAsInactive(instanceId);
             onChildInactiveEvent(id, instanceId);
 
         } else if (status1 == ClusterStatus.Created || status1 == GroupStatus.Created) {
-            if (this.terminatingMonitorsList.contains(id)) {
-                this.terminatingMonitorsList.remove(id);
-                this.aliasToActiveMonitorsMap.remove(id);
+            if (this.terminatingMonitorsList.contains(instanceId)) {
+                this.terminatingMonitorsList.remove(instanceId);
+                this.aliasToActiveMonitorsMap.remove(instanceId);
                 if (AutoscalerContext.getInstance().getClusterMonitors().containsKey(id)) {
                     AutoscalerContext.getInstance().removeClusterMonitor(id);
                 }
             }
         } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminating) {
             //mark the child monitor as inActive in the map
-            this.markMonitorAsTerminating(id);
+            this.markMonitorAsTerminating(instanceId);
 
         } else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {
             //Check whether all dependent goes Terminated and then start them in parallel.
@@ -230,7 +229,7 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
 
     @Override
     public void onParentStatusEvent(MonitorStatusEvent statusEvent)
-            throws ParentMonitorNotFoundException {
+            throws MonitorNotFoundException {
         String instanceId = statusEvent.getInstanceId();
         // send the ClusterTerminating event
         if (statusEvent.getStatus() == GroupStatus.Terminating ||
@@ -400,10 +399,10 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
      *
      * @param group
      * @param parentInstanceId
-     * @throws ParentMonitorNotFoundException
+     * @throws org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException
      */
     public void createInstanceAndStartDependency(Group group, String parentInstanceId)
-            throws ParentMonitorNotFoundException {
+            throws MonitorNotFoundException {
         String deploymentPolicyName = group.getDeploymentPolicy();
 
         String instanceId;

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index f48461f..01c1787 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -33,7 +33,7 @@ import org.apache.stratos.autoscaler.applications.dependency.context.GroupChildC
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
-import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException;
+import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
@@ -42,6 +42,7 @@ import org.apache.stratos.autoscaler.monitor.MonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.status.processor.StatusChecker;
+import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
 import org.apache.stratos.messaging.domain.applications.ParentComponent;
 import org.apache.stratos.messaging.domain.instance.Instance;
@@ -97,7 +98,7 @@ public abstract class ParentComponentMonitor extends Monitor {
      * it will get invoked when the monitor starts up only.
      */
     public void startDependency(ParentComponent component, String instanceId) throws
-                                                                    ParentMonitorNotFoundException {
+            MonitorNotFoundException {
         //start the first dependency
         List<ApplicationChildContext> applicationContexts = this.startupDependencyTree.
                 getStarAbleDependencies();
@@ -110,7 +111,7 @@ public abstract class ParentComponentMonitor extends Monitor {
      * it will get invoked when the monitor starts up only.
      */
     public boolean startDependencyByInstanceCreation(String childId, String instanceId) throws
-            ParentMonitorNotFoundException {
+            MonitorNotFoundException {
         //start the first dependency
         List<ApplicationChildContext> applicationContexts =
                 this.startupDependencyTree.getStarAbleDependencies(childId);
@@ -139,7 +140,7 @@ public abstract class ParentComponentMonitor extends Monitor {
      *
      * @param id alias/clusterId of which receive the activated event
      */
-    public boolean startDependency(String id, String instanceId) throws ParentMonitorNotFoundException {
+    public boolean startDependency(String id, String instanceId) throws MonitorNotFoundException {
         List<ApplicationChildContext> applicationContexts = this.startupDependencyTree
                 .getStarAbleDependencies(id);
         List<String> instanceIds = new ArrayList<String>();
@@ -203,7 +204,7 @@ public abstract class ParentComponentMonitor extends Monitor {
      * @param applicationContexts the found applicationContexts to be started
      */
     private boolean startDependency(List<ApplicationChildContext> applicationContexts, String instanceId)
-            throws ParentMonitorNotFoundException {
+            throws MonitorNotFoundException {
         if (applicationContexts != null && applicationContexts.isEmpty()) {
             //all the groups/clusters have been started and waiting for activation
             log.info("There is no child found for the [group]: " + this.id);
@@ -217,7 +218,7 @@ public abstract class ParentComponentMonitor extends Monitor {
             //FIXME whether to start new monitor or throw exception
             if (!this.aliasToActiveMonitorsMap.containsKey(context.getId())) {
                 String msg = "Required Monitor cannot be fount in the hierarchy";
-                throw new ParentMonitorNotFoundException(msg);
+                throw new MonitorNotFoundException(msg);
             } else {
                 //starting a new instance of the child
                 Monitor monitor = aliasToActiveMonitorsMap.get(context.getId());
@@ -255,6 +256,7 @@ public abstract class ParentComponentMonitor extends Monitor {
             if (this.terminatingMonitorsList.contains(eventId)) {
                 this.terminatingMonitorsList.remove(eventId);
             }
+
             boolean startDep;
             if(!aliasToActiveMonitorsMap.containsKey(eventId)) {
                startDep = startDependency(eventId, instanceId);
@@ -262,14 +264,13 @@ public abstract class ParentComponentMonitor extends Monitor {
                 startDep = startDependencyByInstanceCreation(eventId, instanceId);
             }
 
-            if (log.isDebugEnabled()) {
-                log.debug("started a child: " + startDep + " by the group/cluster: " + eventId);
-
-            }
             if (!startDep) {
-                StatusChecker.getInstance().onChildStatusChange(eventId, this.id, this.appId, instanceId);
+                ServiceReferenceHolder.getInstance().getGroupStatusProcessorChain().
+                        process(this.id, this.appId, instanceId);
+            } else {
+                log.info("started a child: " + startDep + " by the group/cluster: " + eventId);
             }
-        } catch (ParentMonitorNotFoundException e) {
+        } catch (MonitorNotFoundException e) {
             //TODO revert the siblings and notify parent, change a flag for reverting/un-subscription
             log.error(e);
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
index 78fd308..c2491a0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
@@ -20,8 +20,7 @@ package org.apache.stratos.autoscaler.monitor.events.builder;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.exception.application.ParentMonitorNotFoundException;
-import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
+import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.component.ParentComponentMonitor;
 import org.apache.stratos.autoscaler.monitor.events.*;
@@ -29,8 +28,6 @@ import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
 
-import java.util.List;
-
 /**
  * This will build the necessary monitor status events to be sent to the parent/child  monitor
  */
@@ -67,14 +64,14 @@ public class MonitorStatusEventBuilder {
     }
 
     public static void notifyChildren (ParentComponentMonitor componentMonitor, MonitorStatusEvent statusEvent)
-                                                            throws ParentMonitorNotFoundException {
+                                                            throws MonitorNotFoundException {
         for (Monitor activeChildMonitor : componentMonitor.getAliasToActiveMonitorsMap().values()) {
             activeChildMonitor.onParentStatusEvent(statusEvent);
         }
     }
 
     public static void notifyChildGroup(Monitor child, GroupStatus state, String instanceId)
-                                                            throws ParentMonitorNotFoundException {
+                                                            throws MonitorNotFoundException {
         MonitorStatusEvent statusEvent = new GroupStatusEvent(state, child.getId(), instanceId);
         child.onParentStatusEvent(statusEvent);
     }
@@ -91,7 +88,7 @@ public class MonitorStatusEventBuilder {
     }*/
 
     public static void notifyChildCluster(Monitor child, ClusterStatus state, String instanceId)
-            throws ParentMonitorNotFoundException {
+            throws MonitorNotFoundException {
         MonitorStatusEvent statusEvent = new ClusterStatusEvent(state, child.getId(), instanceId);
         child.onParentStatusEvent(statusEvent);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
index fa2ffa8..9e60357 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusActiveProcessor.java
@@ -65,10 +65,6 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
         Map<String, Group> groups;
         Map<String, ClusterDataHolder> clusterData;
 
-        if (log.isInfoEnabled()) {
-            log.info("StatusChecker calculating the status for the group [ " + idOfComponent + " ]");
-        }
-
         try {
             ApplicationHolder.acquireWriteLock();
             if (idOfComponent.equals(appId)) {
@@ -96,23 +92,21 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
                         //send application activated event
                         log.info("sending app activate: " + appId);
                         ApplicationBuilder.handleApplicationActivatedEvent(appId, instanceId);
+                        return true;
                     } else if (component instanceof Group) {
                         //send activation to the parent
                         log.info("sending group activate: " + component.getUniqueIdentifier());
                         ApplicationBuilder.handleGroupActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
+                        return true;
                     }
 
                 }
             }
-
-
         } finally {
             ApplicationHolder.releaseWriteLock();
 
         }
-
-
-        return true;
+        return false;
     }
 
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/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 84fcf8f..90b608c 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,12 +96,14 @@ public class GroupStatusInActiveProcessor extends GroupStatusProcessor {
                 if (component instanceof Application) {
                     //send application activated event
                     log.warn("Application can't be in in-active : " + appId);
+                    return true;
                     //ApplicationBuilder.handleApp(appId);
                 } else if (component instanceof Group) {
                     //send activation to the parent
                     if (((Group) component).getStatus(null) != GroupStatus.Inactive) {
                         log.info("sending group in-active: " + component.getUniqueIdentifier());
                         ApplicationBuilder.handleGroupInActivateEvent(appId, component.getUniqueIdentifier(), instanceId);
+                        return true;
                     }
                 }
             }
@@ -113,7 +115,7 @@ public class GroupStatusInActiveProcessor extends GroupStatusProcessor {
         }
 
 
-        return true;
+        return false;
     }
 
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
index 0e8c7cc..5724669 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusProcessorChain.java
@@ -18,12 +18,16 @@
  */
 package org.apache.stratos.autoscaler.status.processor.group;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.status.processor.StatusProcessorChain;
 
 /**
  * Cluster status tracking processor chain
  */
 public class GroupStatusProcessorChain extends StatusProcessorChain {
+    private static final Log log = LogFactory.getLog(GroupStatusActiveProcessor.class);
+
     private GroupStatusActiveProcessor groupStatusActiveProcessor;
     private GroupStatusTerminatedProcessor groupStatusTerminatedProcessor;
     private GroupStatusTerminatingProcessor groupStatusTerminatingProcessor;
@@ -51,6 +55,11 @@ public class GroupStatusProcessorChain extends StatusProcessorChain {
         if (root == null) {
             throw new RuntimeException("Message processor chain is not initialized");
         }
+        if (log.isInfoEnabled()) {
+            log.info("GroupProcessor chain calculating the status for the group " +
+                    "[ " + idOfComponent + " ]");
+        }
+
         return root.process(idOfComponent, appId, instanceId);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
index 329a901..3ea460d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatedProcessor.java
@@ -94,11 +94,14 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
                     if (component instanceof Application) {
                         log.info("sending app terminated: " + appId);
                         ApplicationBuilder.handleApplicationTerminatedEvent(appId);
+                        return true;
                     } else if (component instanceof Group) {
                         //send activation to the parent
                         if (((Group) component).getStatus(null) != GroupStatus.Terminated) {
                             log.info("sending group terminated : " + component.getUniqueIdentifier());
-                            ApplicationBuilder.handleGroupTerminatedEvent(appId, component.getUniqueIdentifier(), instanceId);
+                            ApplicationBuilder.handleGroupTerminatedEvent(appId,
+                                    component.getUniqueIdentifier(), instanceId);
+                            return true;
                         }
                     }
                 }
@@ -111,7 +114,7 @@ public class GroupStatusTerminatedProcessor extends GroupStatusProcessor {
         }
 
 
-        return true;
+        return false;
     }
 
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/0c5d4caa/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
index 97bedb3..5d51f23 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/group/GroupStatusTerminatingProcessor.java
@@ -95,24 +95,23 @@ public class GroupStatusTerminatingProcessor extends GroupStatusProcessor {
                     if (component instanceof Application) {
                         log.info("sending app terminated: " + appId);
                         ApplicationBuilder.handleApplicationTerminatedEvent(appId);
+                        return true;
                     } else if (component instanceof Group) {
                         //send activation to the parent
                         if (((Group) component).getStatus(null) != GroupStatus.Terminated) {
                             log.info("sending group terminated : " + component.getUniqueIdentifier());
-                            ApplicationBuilder.handleGroupTerminatedEvent(appId, component.getUniqueIdentifier(), instanceId);
+                            ApplicationBuilder.handleGroupTerminatedEvent(appId,
+                                    component.getUniqueIdentifier(), instanceId);
+                            return true;
                         }
                     }
                 }
             }
-
-
         } finally {
             ApplicationHolder.releaseWriteLock();
 
         }
-
-
-        return true;
+        return false;
     }