Repository: incubator-stratos
Updated Branches:
  refs/heads/master 5db10fe85 -> 302244d28


listening on memeber meaintenance mode in AS


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/302244d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/302244d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/302244d2

Branch: refs/heads/master
Commit: 302244d28d693f8abdcd491e1dd7b43ee59f77bb
Parents: 5db10fe
Author: rekathiru <[email protected]>
Authored: Fri Feb 21 18:59:13 2014 +0530
Committer: rekathiru <[email protected]>
Committed: Fri Feb 21 18:59:13 2014 +0530

----------------------------------------------------------------------
 .../topology/AutoscalerTopologyReceiver.java    | 52 +++++++++++++++-----
 .../autoscaler/rule/RuleTasksDelegator.java     |  2 +-
 2 files changed, 42 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/302244d2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
index ffbbbb3..fae2307 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyReceiver.java
@@ -19,15 +19,9 @@
 
 package org.apache.stratos.autoscaler.message.receiver.topology;
 
-import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.AutoscalerContext;
-import org.apache.stratos.autoscaler.MemberStatsContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
-import org.apache.stratos.autoscaler.PartitionContext;
+import org.apache.stratos.autoscaler.*;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.PolicyValidationException;
@@ -41,10 +35,7 @@ import org.apache.stratos.autoscaler.util.AutoscalerUtil;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.event.Event;
-import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
-import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
-import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
-import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent;
+import org.apache.stratos.messaging.event.topology.*;
 import org.apache.stratos.messaging.listener.topology.*;
 import 
org.apache.stratos.messaging.message.processor.topology.TopologyMessageProcessorChain;
 import 
org.apache.stratos.messaging.message.receiver.topology.TopologyEventMessageDelegator;
@@ -53,6 +44,8 @@ import 
org.apache.stratos.messaging.message.receiver.topology.TopologyReceiver;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
+import java.util.List;
+
 /**
  * Load balancer topology receiver.
  */
@@ -306,6 +299,43 @@ public class AutoscalerTopologyReceiver implements 
Runnable {
             }
             }
         });
+
+
+        processorChain.addEventListener(new MemberMaintenanceListener() {
+            @Override
+            protected void onEvent(Event event) {
+
+            try {
+                TopologyManager.acquireReadLock();
+
+                MemberMaintenanceModeEvent e = 
(MemberMaintenanceModeEvent)event;
+                String memberId = e.getMemberId();
+                String partitionId = e.getPartitionId();
+                String networkPartitionId = e.getNetworkPartitionId();
+
+                PartitionContext partitionContext;
+                String clusterId = e.getClusterId();
+                AbstractMonitor monitor;
+
+                if(AutoscalerContext.getInstance().moniterExist(clusterId)) {
+                    monitor = 
AutoscalerContext.getInstance().getMonitor(clusterId);
+                    partitionContext = 
monitor.getNetworkPartitionCtxt(networkPartitionId).getPartitionCtxt(partitionId);
+                } else {
+                    monitor = 
AutoscalerContext.getInstance().getLBMonitor(clusterId);
+                    partitionContext = 
monitor.getNetworkPartitionCtxt(networkPartitionId).getPartitionCtxt(partitionId);
+                }
+                partitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
+                if(log.isDebugEnabled()){
+                    log.debug(String.format("Member has been moved as pending 
termination: [member] %s", memberId));
+                }
+                
partitionContext.moveActiveMemberToTerminationPendingMembers(memberId);
+
+            }
+            finally{
+                TopologyManager.releaseReadLock();
+            }
+            }
+        });
         
         processorChain.addEventListener(new ServiceRemovedEventListener() {
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/302244d2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 9f8262d..c086b35 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -130,7 +130,7 @@ public class RuleTasksDelegator {
 
     public void terminateObsoleteInstance(String memberId) {
         try {
-            CloudControllerClient.getInstance().terminate(memberId);
+n            CloudControllerClient.getInstance().terminate(memberId);
         } catch (Throwable e) {
             log.error("Cannot terminate instance", e);
         }

Reply via email to