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