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);

Reply via email to