You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/12/07 11:19:34 UTC

[05/50] [abbrv] stratos git commit: Add debug log to print status of each group instance in GroupStatusActiveProcessor

Add debug log to print status of each group instance in GroupStatusActiveProcessor


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

Branch: refs/heads/release-4.1.5
Commit: 0706e45aef76722f79bf123c9791ae43caa928f9
Parents: 9540eae
Author: Akila Perera <ra...@gmail.com>
Authored: Mon Nov 30 00:17:33 2015 +0530
Committer: gayangunarathne <ga...@wso2.com>
Committed: Mon Dec 7 10:16:25 2015 +0000

----------------------------------------------------------------------
 .../group/GroupStatusActiveProcessor.java       | 84 +++++++++++++++-----
 1 file changed, 63 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/0706e45a/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 b6b0a97..260c78e 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
@@ -24,8 +24,14 @@ import org.apache.stratos.autoscaler.applications.ApplicationHolder;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import org.apache.stratos.autoscaler.status.processor.StatusProcessor;
 import org.apache.stratos.messaging.domain.application.*;
+import org.apache.stratos.messaging.domain.instance.ClusterInstance;
+import org.apache.stratos.messaging.domain.instance.GroupInstance;
+import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 
+import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -41,8 +47,7 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
     }
 
     @Override
-    public boolean process(String idOfComponent, String appId,
-                           String instanceId) {
+    public boolean process(String idOfComponent, String appId, String instanceId) {
         boolean statusChanged;
         statusChanged = doProcess(idOfComponent, appId, instanceId);
         if (statusChanged) {
@@ -54,8 +59,8 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
             return nextProcessor.process(idOfComponent, appId, instanceId);
         } else {
 
-            log.warn(String.format("No possible state change found for [component] %s [instance] %s",
-                    idOfComponent, instanceId));
+            log.warn(String.format("No possible state change found for [component] %s, [instance] %s", idOfComponent,
+                    instanceId));
         }
         return false;
     }
@@ -67,8 +72,9 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
         Map<String, ClusterDataHolder> clusterData;
 
         if (log.isDebugEnabled()) {
-            log.debug("StatusChecker calculating the active status for the group " +
-                    "[ " + idOfComponent + " ] " + " for the instance " + " [ " + instanceId + " ]");
+            log.debug(String.format(
+                    "GroupStatusActiveProcessor is checking the status of [application-id] %s, [group-id] %s, "
+                            + "[group-instance-id] %s", appId, idOfComponent, instanceId));
         }
         try {
             ApplicationHolder.acquireWriteLock();
@@ -84,35 +90,71 @@ public class GroupStatusActiveProcessor extends GroupStatusProcessor {
             groups = component.getAliasToGroupMap();
             clusterData = component.getClusterDataMap();
 
-            if (groups.isEmpty() &&
-                    getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
-                    clusterData.isEmpty() &&
-                            getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
-                    getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) &&
-                            getAllGroupInSameState(groups, GroupStatus.Active, instanceId)) {
+            if (groups.isEmpty() && getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) ||
+                    clusterData.isEmpty() && getAllGroupInSameState(groups, GroupStatus.Active, instanceId) ||
+                    getAllClusterInSameState(clusterData, ClusterStatus.Active, instanceId) && getAllGroupInSameState(
+                            groups, GroupStatus.Active, instanceId)) {
 
                 if (component instanceof Application) {
                     //send application activated event
-                    log.info("Sending application instance active for [application] " + appId +
-                            " [instance] " + instanceId);
+                    log.info(String.format(
+                            "Sending application instance active event for [application-id] %s, [instance-id] %s",
+                            appId, instanceId));
                     ApplicationBuilder.handleApplicationInstanceActivatedEvent(appId, instanceId);
                     return true;
                 } else {
                     //send activation to the parent
-                    log.info("Sending group instance active for [group] " +
-                            component.getUniqueIdentifier() + " [instance] " + instanceId);
-                    ApplicationBuilder.handleGroupInstanceActivatedEvent(appId,
-                            component.getUniqueIdentifier(), instanceId);
+                    log.info(String.format(
+                            "Sending group instance active event for [application-id] %s, [group-id] %s, "
+                                    + "[instance-id] %s", appId, component.getUniqueIdentifier(), instanceId));
+                    ApplicationBuilder
+                            .handleGroupInstanceActivatedEvent(appId, component.getUniqueIdentifier(), instanceId);
                     return true;
                 }
-
+            } else {
+                if (log.isDebugEnabled()) {
+                    log.debug(String.format(
+                            "GroupStatusActiveProcessor did not detect any status change for [application-id] %s, "
+                                    + "[group-id] %s, [instance-id] %s", appId, idOfComponent, instanceId));
+                    for (Map.Entry<String, Group> entry : groups.entrySet()) {
+                        Collection<Group> groupCollection = entry.getValue().getGroups();
+                        for (Group group : groupCollection) {
+                            for (GroupInstance groupInstance : group.getInstanceIdToInstanceContextMap().values()) {
+                                log.debug(String.format("Groups: [group-id] %s, [group-instance-id] %s, [status] %s",
+                                        group.getUniqueIdentifier(), groupInstance.getInstanceId(), entry.getKey(),
+                                        groupInstance.getStatus()));
+                            }
+
+                        }
+
+                    }
+                    for (Map.Entry<String, ClusterDataHolder> entry : clusterData.entrySet()) {
+                        String serviceName = entry.getValue().getServiceType();
+                        String clusterId = entry.getValue().getClusterId();
+                        TopologyManager.acquireReadLockForCluster(serviceName, clusterId);
+                        try {
+                            Service service = TopologyManager.getTopology().getService(serviceName);
+                            Cluster cluster = service.getCluster(clusterId);
+                            ClusterInstance context = cluster.getInstanceContexts(instanceId);
+                            if (context != null) {
+                                log.debug(String.format(
+                                        "ClusterData: [cluster-id] %s, [cluster-instance-id] %s, [status] %s",
+                                        entry.getKey(), instanceId, context.getStatus()));
+                            } else {
+                                log.debug(String.format(
+                                        "ClusterData: cluster instance context is null: [cluster-instance-id] %s",
+                                        instanceId));
+                            }
+                        } finally {
+                            TopologyManager.releaseReadLockForCluster(serviceName, clusterId);
+                        }
+                    }
+                }
             }
         } finally {
             ApplicationHolder.releaseWriteLock();
-
         }
         return false;
     }
 
-
 }