You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/11/26 14:44:01 UTC
[4/7] stratos git commit: getting ClusterInstanceContext using the
instance id in the MonitorHierarchy
getting ClusterInstanceContext using the instance id in the MonitorHierarchy
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c3e04dc4
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c3e04dc4
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c3e04dc4
Branch: refs/heads/master
Commit: c3e04dc4d2f555ec99c23592a1c087a41bd14cf5
Parents: 55be3ed
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Wed Nov 26 17:53:44 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Wed Nov 26 17:57:00 2014 +0530
----------------------------------------------------------------------
.../monitor/cluster/VMClusterMonitor.java | 88 +++++++++++++++-----
.../monitor/cluster/VMLbClusterMonitor.java | 64 ++++++++------
.../status/checker/StatusChecker.java | 6 +-
.../cluster/ClusterStatusActiveProcessor.java | 2 +-
.../cluster/ClusterStatusInActiveProcessor.java | 2 +-
.../ClusterStatusTerminatedProcessor.java | 2 +-
.../MemberGradientOfMemoryConsumptionEvent.java | 8 +-
...emberSecondDerivativeOfLoadAverageEvent.java | 8 +-
8 files changed, 125 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index 067df89..aeaaf62 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -18,6 +18,7 @@
*/
package org.apache.stratos.autoscaler.monitor.cluster;
+import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
@@ -64,6 +65,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = averageLoadAverageEvent.getNetworkPartitionId();
String clusterId = averageLoadAverageEvent.getClusterId();
+ String instanceId = averageLoadAverageEvent.getInstanceId();
float value = averageLoadAverageEvent.getValue();
if (log.isDebugEnabled()) {
@@ -71,7 +73,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId ,networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setAverageLoadAverage(value);
} else {
@@ -89,12 +91,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = gradientOfLoadAverageEvent.getNetworkPartitionId();
String clusterId = gradientOfLoadAverageEvent.getClusterId();
+ String instanceId = gradientOfLoadAverageEvent.getInstanceId();
float value = gradientOfLoadAverageEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Grad of load avg event: [cluster] %s [network-partition] %s [value] %s",
clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setLoadAverageGradient(value);
} else {
@@ -111,12 +114,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = secondDerivativeOfLoadAverageEvent.getNetworkPartitionId();
String clusterId = secondDerivativeOfLoadAverageEvent.getClusterId();
+ String instanceId = secondDerivativeOfLoadAverageEvent.getInstanceId();
float value = secondDerivativeOfLoadAverageEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Second Derivation of load avg event: [cluster] %s "
+ "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setLoadAverageSecondDerivative(value);
} else {
@@ -133,12 +137,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = averageMemoryConsumptionEvent.getNetworkPartitionId();
String clusterId = averageMemoryConsumptionEvent.getClusterId();
+ String instanceId = averageMemoryConsumptionEvent.getInstanceId();
float value = averageMemoryConsumptionEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Avg Memory Consumption event: [cluster] %s [network-partition] %s "
+ "[value] %s", clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setAverageMemoryConsumption(value);
} else {
@@ -156,12 +161,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = gradientOfMemoryConsumptionEvent.getNetworkPartitionId();
String clusterId = gradientOfMemoryConsumptionEvent.getClusterId();
+ String instanceId = gradientOfMemoryConsumptionEvent.getInstanceId();
float value = gradientOfMemoryConsumptionEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Grad of Memory Consumption event: [cluster] %s "
+ "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setMemoryConsumptionGradient(value);
} else {
@@ -178,12 +184,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = secondDerivativeOfMemoryConsumptionEvent.getNetworkPartitionId();
String clusterId = secondDerivativeOfMemoryConsumptionEvent.getClusterId();
+ String instanceId = secondDerivativeOfMemoryConsumptionEvent.getInstanceId();
float value = secondDerivativeOfMemoryConsumptionEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Second Derivation of Memory Consumption event: [cluster] %s "
+ "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setMemoryConsumptionSecondDerivative(value);
} else {
@@ -205,8 +212,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
clusterId, networkPartitionId, floatValue));
}
+<<<<<<< HEAD
NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
if (null != networkPartitionContext) {
+=======
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(null, networkPartitionId);
+ if(null != networkPartitionContext){
+>>>>>>> getting ClusterInstanceContext using the instance id in the MonitorHierarchy
networkPartitionContext.setAverageRequestsServedPerInstance(floatValue);
} else {
@@ -224,6 +236,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = averageRequestsInFlightEvent.getNetworkPartitionId();
String clusterId = averageRequestsInFlightEvent.getClusterId();
+ String instanceId = averageRequestsInFlightEvent.getInstanceId();
Float servedCount = averageRequestsInFlightEvent.getServedCount();
Float activeInstances = averageRequestsInFlightEvent.getActiveInstances();
Float requestsServedPerInstance = servedCount / activeInstances;
@@ -235,7 +248,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
log.debug(String.format("Average Rif event: [cluster] %s [network-partition] %s [value] %s",
clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setAverageRequestsInFlight(value);
} else {
@@ -252,12 +265,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = gradientOfRequestsInFlightEvent.getNetworkPartitionId();
String clusterId = gradientOfRequestsInFlightEvent.getClusterId();
+ String instanceId = gradientOfRequestsInFlightEvent.getInstanceId();
float value = gradientOfRequestsInFlightEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Gradient of Rif event: [cluster] %s [network-partition] %s [value] %s",
clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setRequestsInFlightGradient(value);
} else {
@@ -274,12 +288,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = secondDerivativeOfRequestsInFlightEvent.getNetworkPartitionId();
String clusterId = secondDerivativeOfRequestsInFlightEvent.getClusterId();
+ String instanceId = secondDerivativeOfRequestsInFlightEvent.getInstanceId();
float value = secondDerivativeOfRequestsInFlightEvent.getValue();
if (log.isDebugEnabled()) {
log.debug(String.format("Second derivative of Rif event: [cluster] %s "
+ "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
}
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
if (null != networkPartitionContext) {
networkPartitionContext.setRequestsInFlightSecondDerivative(value);
} else {
@@ -294,10 +309,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
public void handleMemberAverageMemoryConsumptionEvent(
MemberAverageMemoryConsumptionEvent memberAverageMemoryConsumptionEvent) {
+ String instanceId = memberAverageMemoryConsumptionEvent.getInstanceId();
String memberId = memberAverageMemoryConsumptionEvent.getMemberId();
Member member = getMemberByMemberId(memberId);
String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
if (null == memberStatsContext) {
@@ -314,10 +330,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
public void handleMemberGradientOfMemoryConsumptionEvent(
MemberGradientOfMemoryConsumptionEvent memberGradientOfMemoryConsumptionEvent) {
+ String instanceId = memberGradientOfMemoryConsumptionEvent.getInstanceId();
String memberId = memberGradientOfMemoryConsumptionEvent.getMemberId();
Member member = getMemberByMemberId(memberId);
String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
if (null == memberStatsContext) {
@@ -340,10 +357,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
public void handleMemberAverageLoadAverageEvent(
MemberAverageLoadAverageEvent memberAverageLoadAverageEvent) {
+ String instanceId = memberAverageLoadAverageEvent.getInstanceId();
String memberId = memberAverageLoadAverageEvent.getMemberId();
Member member = getMemberByMemberId(memberId);
String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
if (null == memberStatsContext) {
@@ -360,10 +378,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
public void handleMemberGradientOfLoadAverageEvent(
MemberGradientOfLoadAverageEvent memberGradientOfLoadAverageEvent) {
+ String instanceId = memberGradientOfLoadAverageEvent.getInstanceId();
String memberId = memberGradientOfLoadAverageEvent.getMemberId();
Member member = getMemberByMemberId(memberId);
String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
if (null == memberStatsContext) {
@@ -380,10 +399,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
public void handleMemberSecondDerivativeOfLoadAverageEvent(
MemberSecondDerivativeOfLoadAverageEvent memberSecondDerivativeOfLoadAverageEvent) {
+ String instanceId = memberSecondDerivativeOfLoadAverageEvent.getInstanceId();
String memberId = memberSecondDerivativeOfLoadAverageEvent.getMemberId();
Member member = getMemberByMemberId(memberId);
String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
if (null == memberStatsContext) {
@@ -417,7 +437,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
}
NetworkPartitionContext nwPartitionCtxt;
- nwPartitionCtxt = getNetworkPartitionCtxt(member);
+ nwPartitionCtxt = getNetworkPartitionCtxt(instanceId, member);
String partitionId = getPartitionOfMember(memberId);
PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId);
if (!partitionCtxt.activeMemberExist(memberId)) {
@@ -452,10 +472,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
public void handleMemberActivatedEvent(
MemberActivatedEvent memberActivatedEvent) {
+ String instanceId = memberActivatedEvent.getInstanceId();
String networkPartitionId = memberActivatedEvent.getNetworkPartitionId();
String partitionId = memberActivatedEvent.getPartitionId();
String memberId = memberActivatedEvent.getMemberId();
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionContext;
partitionContext = networkPartitionCtxt.getPartitionCtxt(partitionId);
partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
@@ -474,7 +495,8 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String networkPartitionId = maintenanceModeEvent.getNetworkPartitionId();
String partitionId = maintenanceModeEvent.getPartitionId();
String memberId = maintenanceModeEvent.getMemberId();
- NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(networkPartitionId);
+ String instanceId = maintenanceModeEvent.getInstanceId();
+ NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionContext = networkPartitionCtxt.getPartitionCtxt(partitionId);
partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
if (log.isDebugEnabled()) {
@@ -487,6 +509,21 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
@Override
public void handleMemberReadyToShutdownEvent(
MemberReadyToShutdownEvent memberReadyToShutdownEvent) {
+<<<<<<< HEAD
+=======
+
+ NetworkPartitionContext nwPartitionCtxt;
+ String networkPartitionId = memberReadyToShutdownEvent.getNetworkPartitionId();
+ String instanceId = memberReadyToShutdownEvent.getInstanceId();
+ nwPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId);
+
+ // start a new member in the same Partition
+ String memberId = memberReadyToShutdownEvent.getMemberId();
+ String partitionId = getPartitionOfMember(memberId);
+ PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId);
+ // terminate the shutdown ready member
+ CloudControllerClient ccClient = CloudControllerClient.getInstance();
+>>>>>>> getting ClusterInstanceContext using the instance id in the MonitorHierarchy
try {
NetworkPartitionContext nwPartitionCtxt;
String networkPartitionId = memberReadyToShutdownEvent.getNetworkPartitionId();
@@ -526,7 +563,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
String clusterId = memberTerminatedEvent.getClusterId();
String instanceId = memberTerminatedEvent.getInstanceId();
String partitionId = memberTerminatedEvent.getPartitionId();
- NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(networkPartitionId);
+ NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId);
PartitionContext partitionContext = networkPartitionContext.getPartitionCtxt(partitionId);
partitionContext.removeMemberStatsContext(memberId);
@@ -614,7 +651,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
Thread memberTerminator = new Thread(new Runnable() {
public void run() {
- for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : getAllNetworkPartitionCtxts().values()) {
for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
//if (log.isDebugEnabled()) {
log.info("Starting to terminate all members in cluster [" + getClusterId() + "] Network Partition [ " +
@@ -657,9 +694,20 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
return vmClusterContext.getNetworkPartitionCtxts();
}
+ public Map<String, NetworkPartitionContext> getAllNetworkPartitionCtxts() {
+
+ Map<String, NetworkPartitionContext> nwPartitionIdToNwPartitionMap = new HashMap<String, NetworkPartitionContext>();
+
+ for (AbstractClusterContext clusterContext : instanceIdToClusterContextMap.values()) {
+ VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
+ nwPartitionIdToNwPartitionMap.putAll(vmClusterContext.getNetworkPartitionCtxts());
+ }
+ return nwPartitionIdToNwPartitionMap;
+ }
+
protected NetworkPartitionContext getNetworkPartitionCtxt(String instanceId, String id) {
- VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(instanceId);;
+ VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(instanceId);
return vmClusterContext.getNetworkPartitionCtxt(id);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
index af770a0..aa8ec30 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
@@ -19,15 +19,14 @@
package org.apache.stratos.autoscaler.monitor.cluster;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
-import org.apache.stratos.autoscaler.PartitionContext;
-import org.apache.stratos.autoscaler.VMClusterContext;
+import org.apache.stratos.autoscaler.*;
import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
import org.apache.stratos.autoscaler.partition.PartitionManager;
import org.apache.stratos.autoscaler.policy.PolicyManager;
@@ -83,35 +82,46 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
@Override
protected void monitor() {
- // TODO make this concurrent
- for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts().values()) {
- // minimum check per partition
- for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts()
- .values()) {
+ Set<Map.Entry<String, AbstractClusterContext>> instanceIdToClusterCtxtEntries = instanceIdToClusterContextMap.entrySet();
+ for (final Map.Entry<String, AbstractClusterContext> instanceIdToClusterCtxtEntry : instanceIdToClusterCtxtEntries) {
+ Runnable monitoringRunnable = new Runnable() {
- if (partitionContext != null) {
- getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
- getMinCheckKnowledgeSession().setGlobal("isPrimary", false);
+ @Override
+ public void run() {
+ for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
- if (log.isDebugEnabled()) {
- log.debug(String.format("Running minimum check for partition %s ",
- partitionContext.getPartitionId()));
- }
+ // minimum check per partition
+ for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts()
+ .values()) {
- minCheckFactHandle =
- AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession(),
- minCheckFactHandle,
- partitionContext);
- obsoleteCheckFactHandle =
- AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
- obsoleteCheckFactHandle, partitionContext);
- // start only in the first partition context
- break;
- }
+ if (partitionContext != null) {
+ getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ getMinCheckKnowledgeSession().setGlobal("isPrimary", false);
- }
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running minimum check for partition %s ",
+ partitionContext.getPartitionId()));
+ }
+
+ minCheckFactHandle =
+ AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession(),
+ minCheckFactHandle,
+ partitionContext);
+ obsoleteCheckFactHandle =
+ AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
+ obsoleteCheckFactHandle, partitionContext);
+ // start only in the first partition context
+ break;
+ }
+
+ }
+
+ }
+ }
+ };
+ monitoringRunnable.run();
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/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 4bfe40a..b36ce2a 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
@@ -174,7 +174,7 @@ public class StatusChecker {
*/
private boolean clusterActive(VMClusterMonitor monitor) {
boolean clusterActive = false;
- for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
if (partitionContext.getMinimumMemberCount() == partitionContext.getActiveMemberCount()) {
@@ -198,7 +198,7 @@ public class StatusChecker {
*/
private boolean clusterMonitorHasMembers(VMClusterMonitor monitor) {
boolean hasMember = false;
- for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
if (partitionContext.getNonTerminatedMemberCount() > 0) {
@@ -263,7 +263,7 @@ public class StatusChecker {
*/
private boolean getClusterInactive(VMClusterMonitor monitor, String partitionId) {
boolean clusterInActive = false;
- for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
for (PartitionContext partition : networkPartitionContext.getPartitionCtxts().values()) {
if (partitionId.equals(partition.getPartitionId()) &&
partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusActiveProcessor.java
index 23ef47c..29e3f9a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusActiveProcessor.java
@@ -65,7 +65,7 @@ public class ClusterStatusActiveProcessor extends ClusterStatusProcessor {
VMClusterMonitor monitor = (VMClusterMonitor) AutoscalerContext.getInstance().
getClusterMonitor(clusterId);
boolean clusterActive = false;
- for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts(instanceId).values()) {
//minimum check per partition
for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
if (partitionContext.getMinimumMemberCount() == partitionContext.getActiveMemberCount()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusInActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusInActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusInActiveProcessor.java
index 2b17653..9b60a9e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusInActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusInActiveProcessor.java
@@ -91,7 +91,7 @@ public class ClusterStatusInActiveProcessor extends ClusterStatusProcessor {
private boolean getClusterInactive(VMClusterMonitor monitor) {
boolean clusterInActive = false;
- for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
for (PartitionContext partition : networkPartitionContext.getPartitionCtxts().values()) {
if (partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) {
clusterInActive = true;
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusTerminatedProcessor.java
index d480690..a2a6b13 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/cluster/ClusterStatusTerminatedProcessor.java
@@ -120,7 +120,7 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
*/
private boolean clusterMonitorHasMembers(VMClusterMonitor monitor) {
boolean hasMember = false;
- for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts().values()) {
+ for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
if (partitionContext.getNonTerminatedMemberCount() > 0) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberGradientOfMemoryConsumptionEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberGradientOfMemoryConsumptionEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberGradientOfMemoryConsumptionEvent.java
index b94f5ef..f9a528a 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberGradientOfMemoryConsumptionEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberGradientOfMemoryConsumptionEvent.java
@@ -26,10 +26,12 @@ import org.apache.stratos.messaging.event.Event;
*/
public class MemberGradientOfMemoryConsumptionEvent extends Event {
+ private final String instanceId;
private final String memberId;
private final float value;
- public MemberGradientOfMemoryConsumptionEvent(String memberId, float value) {
+ public MemberGradientOfMemoryConsumptionEvent(String instanceId, String memberId, float value) {
+ this.instanceId = instanceId;
this.memberId = memberId;
this.value = value;
}
@@ -42,4 +44,8 @@ public class MemberGradientOfMemoryConsumptionEvent extends Event {
public float getValue() {
return value;
}
+
+ public String getInstanceId() {
+ return instanceId;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c3e04dc4/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberSecondDerivativeOfLoadAverageEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberSecondDerivativeOfLoadAverageEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberSecondDerivativeOfLoadAverageEvent.java
index 23be4f0..e4d4b9c 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberSecondDerivativeOfLoadAverageEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberSecondDerivativeOfLoadAverageEvent.java
@@ -26,11 +26,13 @@ import org.apache.stratos.messaging.event.Event;
*/
public class MemberSecondDerivativeOfLoadAverageEvent extends Event {
private final String clusterId;
+ private final String instanceId;
private final String memberId;
private final float value;
- public MemberSecondDerivativeOfLoadAverageEvent(String clusterId, String memberId, float value) {
+ public MemberSecondDerivativeOfLoadAverageEvent(String clusterId, String instanceId, String memberId, float value) {
this.clusterId = clusterId;
+ this.instanceId = instanceId;
this.memberId = memberId;
this.value = value;
}
@@ -47,4 +49,8 @@ public class MemberSecondDerivativeOfLoadAverageEvent extends Event {
public String getClusterId() {
return clusterId;
}
+
+ public String getInstanceId() {
+ return instanceId;
+ }
}