Repository: stratos Updated Branches: refs/heads/master 45850e71a -> 7db006b56
fixing dependency startup issue Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7db006b5 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7db006b5 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7db006b5 Branch: refs/heads/master Commit: 7db006b565437d4d18a2c66e9794a0fdbaae279c Parents: 45850e7 Author: reka <[email protected]> Authored: Mon Jun 15 15:39:54 2015 +0530 Committer: reka <[email protected]> Committed: Mon Jun 15 15:40:14 2015 +0530 ---------------------------------------------------------------------- .../component/ParentComponentMonitor.java | 30 +++++++++++++++++++- .../domain/instance/GroupInstance.java | 19 +++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/7db006b5/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 8a17795..6efa726 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 @@ -52,6 +52,7 @@ import org.apache.stratos.messaging.domain.application.ParentComponent; import org.apache.stratos.messaging.domain.application.ScalingDependentList; import org.apache.stratos.messaging.domain.instance.ClusterInstance; import org.apache.stratos.messaging.domain.instance.GroupInstance; +import org.apache.stratos.messaging.domain.instance.Instance; import org.apache.stratos.messaging.domain.topology.ClusterStatus; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; @@ -332,7 +333,34 @@ public abstract class ParentComponentMonitor extends Monitor { boolean startDep = false; if (!aliasToActiveChildMonitorsMap.containsKey(childId) || !pendingChildMonitorsList.contains(childId)) { - startDep = startDependency(childId, instanceId); + + // Need to decide whether it has become active in the first iteration. + // Then need to start the dependents. + // If it is a second iteration, then if there is no dependents, + // no need to invoke start dependencies. + + Monitor childMonitor = aliasToActiveChildMonitorsMap.get(childId); + if(childMonitor != null) { + Instance instance = childMonitor.getInstance(instanceId); + boolean firstIteration = false; + if(instance != null) { + if(instance instanceof GroupInstance) { + GroupInstance groupInstance = (GroupInstance)instance; + firstIteration = groupInstance.getPreviousState() == GroupStatus.Created; + } else if(instance instanceof ClusterInstance) { + ClusterInstance clusterInstance = (ClusterInstance)instance; + firstIteration = clusterInstance.getPreviousState() == ClusterStatus.Created; + } + if(firstIteration || childMonitor.hasStartupDependents()) { + startDep = startDependency(childId, instanceId); + } + } else { + startDep = startDependency(childId, instanceId); + } + } else { + startDep = startDependency(childId, instanceId); + } + } //Checking whether all the monitors got created http://git-wip-us.apache.org/repos/asf/stratos/blob/7db006b5/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/GroupInstance.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/GroupInstance.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/GroupInstance.java index 9c20fd8..a450a8c 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/GroupInstance.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/GroupInstance.java @@ -20,6 +20,7 @@ package org.apache.stratos.messaging.domain.instance; import org.apache.stratos.messaging.domain.application.GroupStatus; +import org.apache.stratos.messaging.domain.topology.ClusterStatus; import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager; import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateTransitionBehavior; @@ -53,5 +54,23 @@ public class GroupInstance extends Instance<GroupStatus> implements LifeCycleSta return this.lifeCycleStateManager.changeState(newState); } + /** + * Get the current state + * + * @return the current state + */ + public GroupStatus getCurrentState() { + return lifeCycleStateManager.getCurrentState(); + } + + /** + * Retrieves the previous state + * + * @return previous state + */ + public GroupStatus getPreviousState() { + return lifeCycleStateManager.getPreviousState(); + } + }
