Updated Branches:
  refs/heads/master 0635e3bc5 -> a05094255

fixing the issue caused by unsubscription


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

Branch: refs/heads/master
Commit: cc6bc1b24eaa3275d4dabd421ad2512308668e62
Parents: fc9eb2a
Author: rekathiru <[email protected]>
Authored: Fri Jan 17 17:23:58 2014 +0530
Committer: rekathiru <[email protected]>
Committed: Fri Jan 17 17:23:58 2014 +0530

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        | 48 ++++++++++----------
 1 file changed, 24 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/cc6bc1b2/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 3d9c1c6..ac2e1e2 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -28,25 +28,17 @@ import org.apache.stratos.cloud.controller.interfaces.Iaas;
 import org.apache.stratos.cloud.controller.jcloud.ComputeServiceBuilderUtil;
 import org.apache.stratos.cloud.controller.persist.Deserializer;
 import org.apache.stratos.cloud.controller.pojo.*;
-import 
org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublisherTask;
 import org.apache.stratos.cloud.controller.registry.RegistryManager;
 import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.topology.TopologySynchronizerTask;
-import 
org.apache.stratos.cloud.controller.topic.instance.status.InstanceStatusEventMessageDelegator;
 import org.apache.stratos.cloud.controller.topology.TopologyBuilder;
+import org.apache.stratos.cloud.controller.topology.TopologyManager;
 import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
-import org.apache.stratos.cloud.controller.util.ServiceReferenceHolder;
 import 
org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator;
+import org.apache.stratos.messaging.domain.topology.Member;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
-import org.jclouds.ec2.compute.options.EC2TemplateOptions;
-import org.wso2.carbon.ntask.common.TaskException;
-import org.wso2.carbon.ntask.core.TaskInfo;
-import org.wso2.carbon.ntask.core.TaskInfo.TriggerInfo;
-import org.wso2.carbon.ntask.core.TaskManager;
-import org.wso2.carbon.ntask.core.service.TaskService;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
 import java.util.*;
@@ -878,20 +870,28 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
     @Override
        public void unregisterService(String clusterId) throws 
UnregisteredClusterException {
-        ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
-        
-        if(ctxt == null) {
-            String msg = "Unregistration of service cluster failed. Cluster 
not found: "+clusterId;
-            log.error(msg);
-            throw new UnregisteredClusterException(msg);
-        }
-        
-        TopologyBuilder.handleClusterRemoved(ctxt);
-
-        dataHolder.removeClusterContext(clusterId);
-        dataHolder.removeMemberContext(clusterId);
-        
-        persist();
+        final String clusterId_ = clusterId;
+            Runnable r = new Runnable() {
+                 public void run() {
+                     ClusterContext ctxt = 
dataHolder.getClusterContext(clusterId_);
+                     Collection<Member> members = 
TopologyManager.getTopology().
+                             
getService(ctxt.getCartridgeType()).getCluster(clusterId_).getMembers();
+                     while(members.size() > 0) {
+                        //waiting until all the members got removed from the 
Topology
+                        CloudControllerUtil.sleep(1000);
+                     }
+                    if(ctxt == null) {
+                        String msg = "Unregistration of service cluster 
failed. Cluster not found: " + clusterId_;
+                        log.error(msg);
+                    }
+                     log.info("Unregistration of service cluster: " + 
clusterId_);
+                     TopologyBuilder.handleClusterRemoved(ctxt);
+                     dataHolder.removeClusterContext(clusterId_);
+                     dataHolder.removeMemberContext(clusterId_);
+                     persist();
+                 }
+            };
+        new Thread(r).start();
         
        }
 

Reply via email to