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/10/30 11:20:28 UTC
[1/2] git commit: fixing the wrongly used log statement
Repository: stratos
Updated Branches:
refs/heads/4.0.0-grouping 605b92f1b -> 5a171c559
fixing the wrongly used log statement
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5a171c55
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5a171c55
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5a171c55
Branch: refs/heads/4.0.0-grouping
Commit: 5a171c559641591efc3c536fcc4217fa7f38f78b
Parents: 932f31f
Author: reka <rt...@gmail.com>
Authored: Thu Oct 30 15:50:10 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Oct 30 15:50:19 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/topology/TopologyBuilder.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/5a171c55/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index b6e3470..1daec32 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@ -1020,7 +1020,7 @@ public class TopologyBuilder {
try {
TopologyManager.acquireWriteLock();
group.setStatus(GroupStatus.Terminated);
- log.info("Group activated adding status started for" + group.getUniqueIdentifier());
+ log.info("Group Terminated adding status started for" + group.getUniqueIdentifier());
TopologyManager.updateTopology(topology);
} finally {
@@ -1054,7 +1054,7 @@ public class TopologyBuilder {
try {
TopologyManager.acquireWriteLock();
group.setStatus(GroupStatus.Terminating);
- log.info("Group activated adding status started for " + group.getUniqueIdentifier());
+ log.info("Group Terminating adding status started for " + group.getUniqueIdentifier());
TopologyManager.updateTopology(topology);
} finally {
[2/2] git commit: fixing issues faced while evaluating status
Posted by re...@apache.org.
fixing issues faced while evaluating status
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/932f31f2
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/932f31f2
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/932f31f2
Branch: refs/heads/4.0.0-grouping
Commit: 932f31f2bce87c3b48c9bf373c744b5ec1f029c5
Parents: 605b92f
Author: reka <rt...@gmail.com>
Authored: Thu Oct 30 15:31:27 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Oct 30 15:50:19 2014 +0530
----------------------------------------------------------------------
.../monitor/AbstractClusterMonitor.java | 5 +-
.../monitor/ParentComponentMonitor.java | 78 ++++++++++++--------
.../monitor/application/ApplicationMonitor.java | 11 ++-
.../monitor/cluster/ClusterMonitor.java | 29 ++++----
.../autoscaler/monitor/group/GroupMonitor.java | 19 ++++-
.../status/checker/StatusChecker.java | 24 +++---
6 files changed, 103 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/932f31f2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
index fb23985..881f838 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
@@ -240,12 +240,13 @@ abstract public class AbstractClusterMonitor extends Monitor implements Runnable
log.info("[Cluster] " + clusterId + "is not notifying the parent, " +
"since it is identified as the independent unit");
- } else if (status == ClusterStatus.Terminating) {
+ /*} else if (status == ClusterStatus.Terminating) {
// notify parent
log.info("[Cluster] " + clusterId + " is not notifying the parent, " +
"since it is in Terminating State");
-
+*/
} else {
+ log.info("[Group] " + this.id + "is notifying the [parent] " + this.parent.getId());
MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, this.status, this.clusterId);
}
//}
http://git-wip-us.apache.org/repos/asf/stratos/blob/932f31f2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
index 537e855..58cdb1a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
@@ -30,6 +30,7 @@ import org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationCont
import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
import org.apache.stratos.autoscaler.status.checker.StatusChecker;
+import org.apache.stratos.messaging.domain.topology.Application;
import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
import org.apache.stratos.messaging.domain.topology.GroupStatus;
import org.apache.stratos.messaging.domain.topology.ParentComponent;
@@ -190,42 +191,17 @@ public abstract class ParentComponentMonitor extends Monitor {
* Make sure that all the dependents have been terminated properly to start the recovery
*/
if (terminationList != null) {
- for (ApplicationContext context1 : terminationList) {
- if (this.aliasToActiveMonitorsMap.containsKey(context1.getId())) {
- log.warn("Dependent [monitor] " + context1.getId() + " not in the correct state");
- allDependentTerminated = false;
- } else if (this.aliasToInActiveMonitorsMap.containsKey(context1.getId())) {
- log.info("Waiting for the [dependent] " + context1.getId() + " to be terminated...");
- allDependentTerminated = false;
- } else {
- allDependentTerminated = true;
- }
- }
+ allDependentTerminated = allDependentTerminated(terminationList);
}
List<ApplicationContext> parentContexts = this.dependencyTree.findAllParentContextWithId(idOfEvent);
- boolean canStart = false;
+ boolean parentsTerminated = false;
if (parentContexts != null) {
- for (ApplicationContext context1 : parentContexts) {
- if (this.aliasToInActiveMonitorsMap.containsKey(context1.getId())) {
- log.info("Waiting for the [Parent Monitor] " + context1.getId()
- + " to be terminated");
- canStart = false;
- } else if (this.aliasToActiveMonitorsMap.containsKey(context1.getId())) {
- if (canStart) {
- log.warn("Found the Dependent [monitor] " + context1.getId()
- + " in the active list wrong state");
- }
- } else {
- log.info("[Parent Monitor] " + context1.getId()
- + " has already been terminated");
- canStart = true;
- }
- }
+ parentsTerminated = allParentTerminated(parentContexts);
}
if ((terminationList != null && allDependentTerminated || terminationList == null) &&
- (parentContexts != null && canStart || parentContexts == null)) {
+ (parentContexts != null && parentsTerminated || parentContexts == null)) {
//Find the non existent monitor by traversing dependency tree
try {
this.startDependencyOnTermination();
@@ -235,13 +211,53 @@ public abstract class ParentComponentMonitor extends Monitor {
}
} else {
StatusChecker.getInstance().onChildStatusChange(idOfEvent, this.id, this.appId);
- log.info("Waiting for the dependent of [monitor] " + idOfEvent
- + " to be terminated");
+ log.info("" +
+ "Checking the status of group/application as no dependent found...");
}
}
+ private boolean allDependentTerminated(List<ApplicationContext> terminationList) {
+ boolean allDependentTerminated = false;
+ for (ApplicationContext context1 : terminationList) {
+ if (this.aliasToActiveMonitorsMap.containsKey(context1.getId())) {
+ log.warn("Dependent [monitor] " + context1.getId() + " not in the correct state");
+ allDependentTerminated = false;
+ return allDependentTerminated;
+ } else if (this.aliasToInActiveMonitorsMap.containsKey(context1.getId())) {
+ log.info("Waiting for the [dependent] " + context1.getId() + " to be terminated...");
+ allDependentTerminated = false;
+ return allDependentTerminated;
+ } else {
+ allDependentTerminated = true;
+ }
+ }
+ return allDependentTerminated;
+ }
+
+
+ private boolean allParentTerminated(List<ApplicationContext> parentContexts) {
+ boolean parentsTerminated = false;
+ for (ApplicationContext context1 : parentContexts) {
+ if (this.aliasToInActiveMonitorsMap.containsKey(context1.getId())) {
+ log.info("Waiting for the [Parent Monitor] " + context1.getId()
+ + " to be terminated");
+ parentsTerminated = false;
+ return parentsTerminated;
+ } else if (this.aliasToActiveMonitorsMap.containsKey(context1.getId())) {
+ if (parentsTerminated) {
+ log.warn("Found the Dependent [monitor] " + context1.getId()
+ + " in the active list wrong state");
+ }
+ } else {
+ log.info("[Parent Monitor] " + context1.getId()
+ + " has already been terminated");
+ parentsTerminated = true;
+ }
+ }
+ return parentsTerminated;
+ }
/**
* This will start the parallel dependencies at once from the top level.
http://git-wip-us.apache.org/repos/asf/stratos/blob/932f31f2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
index e7e3238..6256c02 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
@@ -162,9 +162,18 @@ public class ApplicationMonitor extends ParentComponentMonitor {
} else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
onChildInActiveEvent(id);
+ } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminated) {
+ //mark the child monitor as inActive in the map
+ this.markMonitorAsInactive(id);
+
} else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {
//Check whether all dependent goes Terminated and then start them in parallel.
- this.aliasToInActiveMonitorsMap.remove(id);
+ if(this.aliasToInActiveMonitorsMap.containsKey(id)) {
+ this.aliasToInActiveMonitorsMap.remove(id);
+ } else {
+ log.warn("[monitor] " + id + " cannot be found in the inActive monitors list");
+ }
+
if (this.status != ApplicationStatus.Terminating || this.status != ApplicationStatus.Terminated) {
onChildTerminatedEvent(id);
} else {
http://git-wip-us.apache.org/repos/asf/stratos/blob/932f31f2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index 6d7e8ca..67539ed 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -73,18 +73,26 @@ public class ClusterMonitor extends AbstractClusterMonitor {
//status = ClusterStatus.Created;
}
+ private static void terminateMember(String memberId) {
+ try {
+ CloudControllerClient.getInstance().terminate(memberId);
+
+ } catch (TerminationException e) {
+ log.error("Unable to terminate member [member id ] " + memberId, e);
+ }
+ }
@Override
public void run() {
while (!isDestroyed()) {
try {
- if ((this.status.getCode() <= ClusterStatus.Active.getCode()) ||
- (this.status == ClusterStatus.Inactive && !hasDependent) ||
- !this.hasFaultyMember) {
+ if (((this.status.getCode() <= ClusterStatus.Active.getCode()) ||
+ (this.status == ClusterStatus.Inactive && !hasDependent)) && !this.hasFaultyMember) {
if (log.isDebugEnabled()) {
log.debug("Cluster monitor is running.. " + this.toString());
}
monitor();
+
} else {
if (log.isDebugEnabled()) {
log.debug("Cluster monitor is suspended as the cluster is in " +
@@ -106,8 +114,8 @@ public class ClusterMonitor extends AbstractClusterMonitor {
@Override
public void terminateAllMembers() {
- Thread memberTerminator = new Thread(new Runnable(){
- public void run(){
+ Thread memberTerminator = new Thread(new Runnable() {
+ public void run() {
for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) {
for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
@@ -125,7 +133,7 @@ public class ClusterMonitor extends AbstractClusterMonitor {
}
// pending members
- for (MemberContext pendingMemberCtxt : partitionContext.getPendingMembers()) {
+ for (MemberContext pendingMemberCtxt : partitionContext.getPendingMembers()) {
log.info("Terminating pending member [member id] " + pendingMemberCtxt.getMemberId());
terminateMember(pendingMemberCtxt.getMemberId());
}
@@ -146,15 +154,6 @@ public class ClusterMonitor extends AbstractClusterMonitor {
memberTerminator.start();
}
- private static void terminateMember (String memberId) {
- try {
- CloudControllerClient.getInstance().terminate(memberId);
-
- } catch (TerminationException e) {
- log.error("Unable to terminate member [member id ] " + memberId, e);
- }
- }
-
private boolean isPrimaryMember(MemberContext memberContext) {
Properties props = memberContext.getProperties();
if (log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/932f31f2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
index fc79c59..a9aeb57 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
@@ -24,6 +24,7 @@ import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
import org.apache.stratos.autoscaler.monitor.EventHandler;
+import org.apache.stratos.autoscaler.monitor.Monitor;
import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder;
import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor;
import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent;
@@ -72,15 +73,25 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler
} else if (status1 == ClusterStatus.Inactive || status1 == GroupStatus.Inactive) {
onChildInActiveEvent(id);
+ } else if (status1 == ClusterStatus.Terminating || status1 == GroupStatus.Terminated) {
+ //mark the child monitor as inActive in the map
+ this.markMonitorAsInactive(id);
+
} else if (status1 == ClusterStatus.Terminated || status1 == GroupStatus.Terminated) {
//Check whether all dependent goes Terminated and then start them in parallel.
- this.aliasToInActiveMonitorsMap.remove(id);
+ if(this.aliasToInActiveMonitorsMap.containsKey(id)) {
+ this.aliasToInActiveMonitorsMap.remove(id);
+ } else {
+ log.warn("[monitor] " + id + " cannot be found in the inActive monitors list");
+ }
+
if (this.status != GroupStatus.Terminating || this.status != GroupStatus.Terminated) {
onChildTerminatedEvent(id);
} else {
StatusChecker.getInstance().onChildStatusChange(id, this.id, this.appId);
log.info("Executing the un-subscription request for the [monitor] " + id);
}
+
}
}
@@ -90,7 +101,6 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler
if (statusEvent.getStatus() == GroupStatus.Terminating || statusEvent.getStatus() ==
ApplicationStatus.Terminating) {
StatusEventPublisher.sendGroupTerminatingEvent(appId, id);
- this.markMonitorAsInactive(id);
}
}
@@ -147,12 +157,13 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler
log.info("[Group] " + this.id + "is not notifying the parent, " +
"since it is identified as the independent unit");
- } else if (status == GroupStatus.Terminating) {
+ /*} else if (status == GroupStatus.Terminating) {
log.info("[Group] " + this.id + " is not notifying the parent, " +
"since it is in Terminating State");
-
+*/
} else {
// notify parent
+ log.info("[Group] " + this.id + "is notifying the [parent] " + this.parent.getId());
MonitorStatusEventBuilder.handleGroupStatusEvent(this.parent, this.status, this.id);
}
//}
http://git-wip-us.apache.org/repos/asf/stratos/blob/932f31f2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
index 3a925d1..bc08c56 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
@@ -68,6 +68,7 @@ public class StatusChecker {
// if active then notify upper layer
if (clusterActive) {
//send event to cluster status topic
+ monitor.setHasFaultyMember(false);
StatusEventPublisher.sendClusterActivatedEvent(monitor.getAppId(),
monitor.getServiceId(), monitor.getClusterId());
}
@@ -251,7 +252,10 @@ public class StatusChecker {
*/
private boolean updateChildStatus(String appId, String id, Map<String, Group> groups,
Map<String, ClusterDataHolder> clusterData, ParentComponent parent) {
- boolean groupActive = false;
+ boolean groupsActive = false;
+ boolean groupsTerminated = false;
+ boolean groupsInActive = false;
+ boolean groupsTerminating = false;
ClusterStatus clusterStatus;
GroupStatus groupStatus;
boolean childFound = false;
@@ -350,19 +354,19 @@ public class StatusChecker {
private GroupStatus getGroupStatus(Map<String, Group> groups) {
GroupStatus status = null;
- boolean groupActive = false;
- boolean groupTerminated = false;
+ boolean groupActive = true;
+ boolean groupTerminated = true;
for (Group group : groups.values()) {
if (group.getStatus() == GroupStatus.Active) {
- groupActive = true;
- groupTerminated = false;
+ groupActive = groupActive && true;
+ groupTerminated = false;
} else if (group.getStatus() == GroupStatus.Inactive) {
status = GroupStatus.Inactive;
break;
} else if (group.getStatus() == GroupStatus.Terminated) {
groupActive = false;
- groupTerminated = true;
+ groupTerminated = groupTerminated && true;
} else if (group.getStatus() == GroupStatus.Created) {
groupActive = false;
groupTerminated = false;
@@ -386,13 +390,13 @@ public class StatusChecker {
private ClusterStatus getClusterStatus(Map<String, ClusterDataHolder> clusterData) {
ClusterStatus status = null;
- boolean clusterActive = false;
- boolean clusterTerminated = false;
+ boolean clusterActive = true;
+ boolean clusterTerminated = true;
for (Map.Entry<String, ClusterDataHolder> clusterDataHolderEntry : clusterData.entrySet()) {
Service service = TopologyManager.getTopology().getService(clusterDataHolderEntry.getValue().getServiceType());
Cluster cluster = service.getCluster(clusterDataHolderEntry.getValue().getClusterId());
if (cluster.getStatus() == ClusterStatus.Active) {
- clusterActive = true;
+ clusterActive = clusterActive && true;
clusterTerminated = false;
} else if (cluster.getStatus() == ClusterStatus.Inactive) {
status = ClusterStatus.Inactive;
@@ -401,7 +405,7 @@ public class StatusChecker {
break;
} else if (cluster.getStatus() == ClusterStatus.Terminated) {
clusterActive = false;
- clusterTerminated = true;
+ clusterTerminated = clusterTerminated && true;
} else if (cluster.getStatus() == ClusterStatus.Terminating) {
status = ClusterStatus.Terminating;
clusterActive = false;