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 <[email protected]> Authored: Mon Nov 30 00:17:33 2015 +0530 Committer: gayangunarathne <[email protected]> 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; } - }
