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/18 09:12:15 UTC
stratos git commit: fixing group level deployment policy issue and
verifying status issue
Repository: stratos
Updated Branches:
refs/heads/master 5dd46dca1 -> d858feb17
fixing group level deployment policy issue and verifying status issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d858feb1
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d858feb1
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d858feb1
Branch: refs/heads/master
Commit: d858feb1757c429e6fb8954a4b4267c818d67913
Parents: 5dd46dc
Author: reka <rt...@gmail.com>
Authored: Thu Dec 18 13:41:50 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 18 13:41:50 2014 +0530
----------------------------------------------------------------------
.../monitor/component/GroupMonitor.java | 94 +++++++++++---------
.../component/ParentComponentMonitor.java | 2 +-
2 files changed, 53 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/d858feb1/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 62b33c2..7f96486 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
@@ -279,7 +279,7 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
if (status1 == GroupStatus.Active) {
//Verifying whether all the minimum no of instances of child
// became active to take next action
- boolean isChildActive = verifyGroupStatus(instanceId, GroupStatus.Active);
+ boolean isChildActive = verifyGroupStatus(childId, instanceId, GroupStatus.Active);
if (isChildActive) {
onChildActivatedEvent(childId, instanceId);
} else {
@@ -302,12 +302,12 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
//Verifying whether all the minimum no of instances of child
// became active to take next action
if (status1 == GroupStatus.Terminated) {
- boolean childTerminated = verifyGroupStatus(instanceId, (GroupStatus) status1);
- if (childTerminated) {
- onTerminationOfInstance(childId, instanceId);
- } else {
+ /*boolean childTerminated = verifyGroupStatus(instanceId, (GroupStatus) status1);
+ if (childTerminated) {*/
+ onTerminationOfInstance(childId, instanceId);
+ /*} else {
log.info("Waiting for other group instances to be terminated");
- }
+ }*/
} else {
onTerminationOfInstance(childId, instanceId);
}
@@ -626,10 +626,12 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext,
GroupInstance groupInstance) {
- String partitionId;
+ String partitionId = null;
if (groupInstance == null) {
- partitionId = partitionContext.getPartitionId();
+ if (partitionContext != null) {
+ partitionId = partitionContext.getPartitionId();
+ }
groupInstance = createGroupInstance(group, parentInstanceContext.getNetworkPartitionId(),
parentInstanceContext.getInstanceId(), partitionId);
@@ -686,6 +688,8 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
// Create GroupInstance for partition instance and add to required contexts for minimum instance count
int groupMin = group.getGroupMinInstances();
+ //Setting the networkpartition minimum instances as group min instances
+ groupLevelNetworkPartitionContext.setMinInstanceCount(groupMin);
//Have to check whether group has generated its own instances
List<Instance> existingGroupInstances = group.getInstanceContextsWithParentId(parentInstanceId);
@@ -728,17 +732,19 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
private PartitionContext getPartitionContext(
GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext,
String parentPartitionId) {
- PartitionContext partitionContext;
+ PartitionContext partitionContext = null;
// Get partitionContext to create instance in
List<GroupLevelPartitionContext> partitionContexts = groupLevelNetworkPartitionContext.
getPartitionCtxts();
GroupLevelPartitionContext[] groupLevelPartitionContexts =
new GroupLevelPartitionContext[partitionContexts.size()];
if (parentPartitionId == null) {
- AutoscaleAlgorithm algorithm = this.getAutoscaleAlgorithm(
- groupLevelNetworkPartitionContext.getPartitionAlgorithm());
- partitionContext = algorithm.getNextScaleUpPartitionContext(
- (partitionContexts.toArray(groupLevelPartitionContexts)));
+ if (!partitionContexts.isEmpty()) {
+ AutoscaleAlgorithm algorithm = this.getAutoscaleAlgorithm(
+ groupLevelNetworkPartitionContext.getPartitionAlgorithm());
+ partitionContext = algorithm.getNextScaleUpPartitionContext(
+ (partitionContexts.toArray(groupLevelPartitionContexts)));
+ }
} else {
partitionContext = groupLevelNetworkPartitionContext.
getPartitionContextById(parentPartitionId);
@@ -863,39 +869,43 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
this.isDestroyed = isDestroyed;
}
- public boolean verifyGroupStatus(String instanceId, GroupStatus requiredStatus) {
- if (this.instanceIdToInstanceMap.containsKey(instanceId)) {
- if (((GroupInstance) this.instanceIdToInstanceMap.get(instanceId)).getStatus() == requiredStatus) {
+ public boolean verifyGroupStatus(String childId, String instanceId, GroupStatus requiredStatus) {
+ Monitor monitor = this.getMonitor(childId);
+ List<String> groupInstances;
+ GroupInstance groupInstance = (GroupInstance) monitor.getInstance(instanceId);
+ if (groupInstance == null) {
+ groupInstances = monitor.getInstancesByParentInstanceId(instanceId);
+ } else {
+ if (groupInstance.getStatus() == requiredStatus) {
return true;
+ } else {
+ return false;
}
- } else {
- List<GroupInstance> instances = new ArrayList<GroupInstance>();
- String networkPartitionId = null;
- int noOfInstancesOfRequiredStatus = 0;
- for (Instance instance : this.instanceIdToInstanceMap.values()) {
- GroupInstance groupInstance = (GroupInstance) instance;
- if (groupInstance.getParentId().equals(instanceId)) {
- instances.add(groupInstance);
- networkPartitionId = groupInstance.getNetworkPartitionId();
- if (groupInstance.getStatus() == requiredStatus) {
- noOfInstancesOfRequiredStatus++;
- }
- }
+ }
+
+ String networkPartitionId = null;
+ int noOfInstancesOfRequiredStatus = 0;
+ for (String childInstanceId : groupInstances) {
+ GroupInstance childGroupInstance = (GroupInstance) monitor.getInstance(childInstanceId);
+ networkPartitionId = childGroupInstance.getNetworkPartitionId();
+ if (childGroupInstance.getStatus() == requiredStatus) {
+ noOfInstancesOfRequiredStatus++;
}
- if (!instances.isEmpty()) {
- int minInstances = this.networkPartitionCtxts.get(networkPartitionId).
- getMinInstanceCount();
- //if terminated all the instances in this instances map should be in terminated state
- if (noOfInstancesOfRequiredStatus == this.inactiveInstancesMap.size() &&
- requiredStatus == GroupStatus.Terminated) {
- return true;
- } else if (noOfInstancesOfRequiredStatus >= minInstances) {
+ }
+
+ if (!groupInstances.isEmpty()) {
+ int minInstances = this.networkPartitionCtxts.get(networkPartitionId).
+ getMinInstanceCount();
+ //if terminated all the instances in this instances map should be in terminated state
+ if (noOfInstancesOfRequiredStatus == this.inactiveInstancesMap.size() &&
+ requiredStatus == GroupStatus.Terminated) {
+ return true;
+ } else if (noOfInstancesOfRequiredStatus >= minInstances) {
+ return true;
+ } else {
+ //of only one is inActive implies that the whole group is Inactive
+ if (requiredStatus == GroupStatus.Inactive && noOfInstancesOfRequiredStatus >= 1) {
return true;
- } else {
- //of only one is inActive implies that the whole group is Inactive
- if (requiredStatus == GroupStatus.Inactive && noOfInstancesOfRequiredStatus >= 1) {
- return true;
- }
}
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/d858feb1/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 00ec33a..37524d3 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
@@ -455,7 +455,7 @@ public abstract class ParentComponentMonitor extends Monitor {
GroupMonitor monitor1 = (GroupMonitor) monitor;
try {
ApplicationHolder.acquireReadLock();
- if (monitor1.verifyGroupStatus(instanceId, GroupStatus.Active)) {
+ if (monitor1.verifyGroupStatus(context1.getId(), instanceId, GroupStatus.Active)) {
parentsActive = true;
}