Repository: stratos Updated Branches: refs/heads/master 5f44b024d -> d06401f70
Allow LB requests in flight to send not defined instance id Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d06401f7 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d06401f7 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d06401f7 Branch: refs/heads/master Commit: d06401f70e0116e7bf3ea3ab5dc28f5f20ef3fa3 Parents: 5f44b02 Author: Lahiru Sandaruwan <[email protected]> Authored: Fri May 15 17:27:37 2015 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri May 15 17:27:47 2015 +0530 ---------------------------------------------------------------------- .../monitor/cluster/ClusterMonitor.java | 94 ++++++++++++++++---- 1 file changed, 76 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/d06401f7/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 6973db1..6f9cbe4 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 @@ -826,13 +826,13 @@ public class ClusterMonitor extends Monitor { if (null != networkPartitionContext) { int totalActiveMemberCount = 0; - for(InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()){ - if(clusterInstanceContext instanceof ClusterInstanceContext){ + for (InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()) { + if (clusterInstanceContext instanceof ClusterInstanceContext) { totalActiveMemberCount += ((ClusterInstanceContext) clusterInstanceContext).getActiveMemberCount(); } } - for(InstanceContext instanceContext : networkPartitionContext.getActiveInstances()){ - if(instanceContext instanceof ClusterInstanceContext){ + for (InstanceContext instanceContext : networkPartitionContext.getActiveInstances()) { + if (instanceContext instanceof ClusterInstanceContext) { ClusterInstanceContext clusterInstanceContext = ((ClusterInstanceContext) instanceContext); clusterInstanceContext.setAverageRequestsInFlight( value * clusterInstanceContext.getActiveMemberCount() / totalActiveMemberCount); @@ -866,18 +866,47 @@ public class ClusterMonitor extends Monitor { String clusterId = gradientOfRequestsInFlightEvent.getClusterId(); String clusterInstanceId = gradientOfRequestsInFlightEvent.getClusterInstanceId(); 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)); } - ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext( - networkPartitionId, clusterInstanceId); - if (null != clusterLevelNetworkPartitionContext) { - clusterLevelNetworkPartitionContext.setRequestsInFlightGradient(value); + if (clusterInstanceId.equals(NOT_DEFINED)) { + + ClusterLevelNetworkPartitionContext networkPartitionContext = getNetworkPartitionContext(networkPartitionId); + + if (null != networkPartitionContext) { + + int totalActiveMemberCount = 0; + for (InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()) { + if (clusterInstanceContext instanceof ClusterInstanceContext) { + totalActiveMemberCount += ((ClusterInstanceContext) clusterInstanceContext).getActiveMemberCount(); + } + } + for (InstanceContext instanceContext : networkPartitionContext.getActiveInstances()) { + if (instanceContext instanceof ClusterInstanceContext) { + ClusterInstanceContext clusterInstanceContext = ((ClusterInstanceContext) instanceContext); + clusterInstanceContext.setRequestsInFlightGradient( + value * clusterInstanceContext.getActiveMemberCount() / totalActiveMemberCount); + } + } + } else { + if (log.isDebugEnabled()) { + log.debug(String.format("Network partition context is not available for :" + + " [network partition] %s", networkPartitionId)); + } + } } else { - if (log.isDebugEnabled()) { - log.debug(String.format("Network partition context is not available for :" + - " [network partition] %s", networkPartitionId)); + + ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext( + networkPartitionId, clusterInstanceId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setRequestsInFlightGradient(value); + } else { + if (log.isDebugEnabled()) { + log.debug(String.format("Network partition context is not available for :" + + " [network partition] %s", networkPartitionId)); + } } } } @@ -893,14 +922,43 @@ public class ClusterMonitor extends Monitor { log.debug(String.format("Second derivative of Rif event: [cluster] %s " + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext( - networkPartitionId, clusterInstanceId); - if (null != clusterLevelNetworkPartitionContext) { - clusterLevelNetworkPartitionContext.setRequestsInFlightSecondDerivative(value); + + if (clusterInstanceId.equals(NOT_DEFINED)) { + + ClusterLevelNetworkPartitionContext networkPartitionContext = getNetworkPartitionContext(networkPartitionId); + + if (null != networkPartitionContext) { + + int totalActiveMemberCount = 0; + for (InstanceContext clusterInstanceContext : networkPartitionContext.getActiveInstances()) { + if (clusterInstanceContext instanceof ClusterInstanceContext) { + totalActiveMemberCount += ((ClusterInstanceContext) clusterInstanceContext).getActiveMemberCount(); + } + } + for (InstanceContext instanceContext : networkPartitionContext.getActiveInstances()) { + if (instanceContext instanceof ClusterInstanceContext) { + ClusterInstanceContext clusterInstanceContext = ((ClusterInstanceContext) instanceContext); + clusterInstanceContext.setRequestsInFlightSecondDerivative( + value * clusterInstanceContext.getActiveMemberCount() / totalActiveMemberCount); + } + } + } else { + if (log.isDebugEnabled()) { + log.debug(String.format("Network partition context is not available for :" + + " [network partition] %s", networkPartitionId)); + } + } } else { - if (log.isDebugEnabled()) { - log.debug(String.format("Network partition context is not available for :" + - " [network partition] %s", networkPartitionId)); + + ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext( + networkPartitionId, clusterInstanceId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setRequestsInFlightSecondDerivative(value); + } else { + if (log.isDebugEnabled()) { + log.debug(String.format("Network partition context is not available for :" + + " [network partition] %s", networkPartitionId)); + } } } }
