Update cluster monitor to clean obsolete partition context when removed
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e30dfbb8 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e30dfbb8 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e30dfbb8 Branch: refs/heads/master Commit: e30dfbb839df6b5e47f0fe64f1194ba5cfd97fec Parents: 4dab322 Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Apr 24 14:40:54 2015 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Apr 24 14:40:54 2015 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/monitor/MonitorFactory.java | 5 ++--- .../autoscaler/monitor/cluster/ClusterMonitor.java | 15 +++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/e30dfbb8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java index a531d59..8446bf6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java @@ -273,9 +273,8 @@ public class MonitorFactory { } try { - org.apache.stratos.cloud.controller.stub.domain.Partition[] partitions - = convertPartitionsToCCPartitions(partitionList.toArray(new Partition[partitionList.size()])); - CloudControllerServiceClient.getInstance().validateDeploymentPolicy(serviceName, networkPartition.getId()); + + CloudControllerServiceClient.getInstance().validateNetworkPartitionOfDeploymentPolicy(serviceName, networkPartition.getId()); } catch (Exception e) { String msg = String.format("Error while validating deployment policy from cloud controller [network-partition-id] %s", networkPartition.getId()); log.error(msg, e); http://git-wip-us.apache.org/repos/asf/stratos/blob/e30dfbb8/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 da3aa31..cba4871 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 @@ -95,7 +95,7 @@ public class ClusterMonitor extends Monitor implements Runnable { protected FactHandle dependentScaleCheckFactHandle; protected boolean hasFaultyMember = false; protected boolean stop = false; - protected AbstractClusterContext clusterContext; + protected ClusterContext clusterContext; protected StatefulKnowledgeSession minCheckKnowledgeSession; protected StatefulKnowledgeSession maxCheckKnowledgeSession; protected StatefulKnowledgeSession obsoleteCheckKnowledgeSession; @@ -113,7 +113,7 @@ public class ClusterMonitor extends Monitor implements Runnable { private boolean groupScalingEnabledSubtree; private static final Log log = LogFactory.getLog(ClusterMonitor.class); - private Map<String, ClusterLevelNetworkPartitionContext> networkPartitionIdToClusterLevelNetworkPartitionCtxts; + private Map<String, ClusterLevelNetworkPartitionContext> networkPartitionIdToClusterLevelNetworkPartitionCtxts; private boolean hasPrimary; private float scalingFactorBasedOnDependencies = 1.0f; private String deploymentPolicyId; @@ -349,11 +349,11 @@ public class ClusterMonitor extends Monitor implements Runnable { this.dependentScaleCheckKnowledgeSession = dependentScaleCheckKnowledgeSession; } - public AbstractClusterContext getClusterContext() { + public ClusterContext getClusterContext() { return clusterContext; } - public void setClusterContext(AbstractClusterContext clusterContext) { + public void setClusterContext(ClusterContext clusterContext) { this.clusterContext = clusterContext; } @@ -608,6 +608,13 @@ public class ClusterMonitor extends Monitor implements Runnable { getObsoleteCheckKnowledgeSession().setGlobal("clusterId", clusterId); obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluate( getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, partitionContext); + + if (partitionContext.isObsoletePartition() + && partitionContext.getTerminationPendingMembers().size() == 0 + && partitionContext.getObsoletedMembers().size() == 0) { + + instanceContext.removePartitionCtxt(partitionContext.getPartition().getId()); + } } }; executorService.execute(monitoringRunnable);
