Fix formatting. Move acquireRad/WriteLock out of try block.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a9ed3c55 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a9ed3c55 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a9ed3c55 Branch: refs/heads/stratos-4.1.x Commit: a9ed3c55f3483142485ae35cb515933d656d5900 Parents: 179120d Author: Akila Perera <[email protected]> Authored: Mon Nov 30 00:20:29 2015 +0530 Committer: Akila Perera <[email protected]> Committed: Mon Nov 30 00:33:47 2015 +0530 ---------------------------------------------------------------------- .../messaging/topology/TopologyBuilder.java | 66 +++++++++----------- 1 file changed, 29 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/a9ed3c55/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java index d0a21d1..109cf30 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java @@ -69,8 +69,8 @@ public class TopologyBuilder { if (cartridgeList == null) { throw new RuntimeException("Cartridge list is empty"); } + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); for (Cartridge cartridge : cartridgeList) { if (!topology.serviceExists(cartridge.getType())) { ServiceType serviceType = cartridge.isMultiTenant() ? @@ -126,8 +126,8 @@ public class TopologyBuilder { throw new RuntimeException(String.format("Service %s does not exist", cartridge.getType())); } if (service.getClusters().size() == 0) { + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); topology.removeService(cartridge.getType()); TopologyHolder.updateTopology(topology); } finally { @@ -149,8 +149,8 @@ public class TopologyBuilder { for (Cluster cluster : appClusters) { Service service = topology.getService(cluster.getServiceName()); if (service == null) { - throw new RuntimeException("Service " + cluster.getServiceName() - + " not found in topology, unable to create cluster"); + throw new RuntimeException( + "Service " + cluster.getServiceName() + " not found in topology, unable to create cluster"); } service.addCluster(cluster); log.info("Cluster created: [cluster] " + cluster.getClusterId()); @@ -312,8 +312,8 @@ public class TopologyBuilder { throw new RuntimeException(String.format("Cluster %s does not exist for service %s", ctxt.getClusterId(), ctxt.getCartridgeType())); } + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); Cluster cluster = service.removeCluster(ctxt.getClusterId()); deploymentPolicy = cluster.getDeploymentPolicyName(); TopologyHolder.updateTopology(topology); @@ -344,8 +344,8 @@ public class TopologyBuilder { if (cluster.memberExists(memberId)) { throw new RuntimeException(String.format("Member %s already exists", memberId)); } + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); Member member = new Member(service.getServiceName(), clusterId, memberId, clusterInstanceId, networkPartitionId, partitionId, memberContext.getLoadBalancingIPType(), initTime); member.setStatus(MemberStatus.Created); @@ -396,9 +396,8 @@ public class TopologyBuilder { if (member == null) { throw new RuntimeException(String.format("Member %s does not exist", memberContext.getMemberId())); } + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); - // Set instance id returned by the IaaS member.setInstanceId(memberContext.getInstanceId()); // Set ip addresses @@ -493,9 +492,8 @@ public class TopologyBuilder { throw new RuntimeException( String.format("Member %s does not exist", instanceStartedEvent.getMemberId())); } - + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); // try update lifecycle state if (!member.isStateTransitionValid(MemberStatus.Starting)) { log.error("Invalid State Transition from " + member.getStatus() + " to " + @@ -564,8 +562,8 @@ public class TopologyBuilder { // grouping - set grouid //TODO memberActivatedEvent.setApplicationId(null); + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); // try update lifecycle state if (!member.isStateTransitionValid(MemberStatus.Active)) { log.error("Invalid state transition from [" + member.getStatus() + "] to [" + @@ -665,9 +663,8 @@ public class TopologyBuilder { instanceReadyToShutdownEvent.getNetworkPartitionId(), instanceReadyToShutdownEvent.getPartitionId()); //member ReadyToShutDown state change time Long timestamp = null; + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); - if (!member.isStateTransitionValid(MemberStatus.ReadyToShutDown)) { throw new RuntimeException("Invalid State Transition from " + member.getStatus() + " to " + MemberStatus.ReadyToShutDown); @@ -723,8 +720,8 @@ public class TopologyBuilder { instanceMaintenanceModeEvent.getServiceName(), instanceMaintenanceModeEvent.getClusterId(), instanceMaintenanceModeEvent.getClusterInstanceId(), instanceMaintenanceModeEvent.getMemberId(), instanceMaintenanceModeEvent.getNetworkPartitionId(), instanceMaintenanceModeEvent.getPartitionId()); + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); // try update lifecycle state if (!member.isStateTransitionValid(MemberStatus.In_Maintenance)) { throw new RuntimeException( @@ -769,15 +766,15 @@ public class TopologyBuilder { String clusterAlias = CloudControllerUtil.getAliasFromClusterId(clusterId); Member member = cluster.getMember(memberId); if (member == null) { - throw new RuntimeException((String.format("Member %s does not exist", memberId))); + throw new RuntimeException((String.format("Member [member-id] %s does not exist", memberId))); } String clusterInstanceId = member.getClusterInstanceId(); //member terminated time Long timestamp = null; + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); properties = member.getProperties(); cluster.removeMember(member); TopologyHolder.updateTopology(topology); @@ -804,7 +801,6 @@ public class TopologyBuilder { public static void handleClusterActivatedEvent( ClusterStatusClusterActivatedEvent clusterStatusClusterActivatedEvent) throws RegistryException { - Topology topology = TopologyHolder.getTopology(); Service service = topology.getService(clusterStatusClusterActivatedEvent.getServiceName()); //update the status of the cluster @@ -830,12 +826,10 @@ public class TopologyBuilder { ClusterInstanceActivatedEvent clusterInstanceActivatedEvent = new ClusterInstanceActivatedEvent( clusterStatusClusterActivatedEvent.getAppId(), clusterStatusClusterActivatedEvent.getServiceName(), clusterStatusClusterActivatedEvent.getClusterId(), clusterStatusClusterActivatedEvent.getInstanceId()); + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); - Collection<KubernetesService> kubernetesServices = clusterContext .getKubernetesServices(clusterStatusClusterActivatedEvent.getInstanceId()); - if ((kubernetesServices != null) && (kubernetesServices.size() > 0)) { try { // Generate access URLs for kubernetes services @@ -850,28 +844,28 @@ public class TopologyBuilder { // Using type URI since only http, https, ftp, file, jar protocols are // supported in URL int port = kubernetesService.getPort(); - if(cluster.getLoadBalancerIps().size() > 0) { + if (cluster.getLoadBalancerIps().size() > 0) { // Load balancer ips have been provided, need to use proxy port port = findProxyPort(applicationId, clusterId, kubernetesService.getPortName()); } - URI accessURL = new URI(kubernetesService.getProtocol(), null, hostname, - port, null, null, null); + URI accessURL = new URI(kubernetesService.getProtocol(), null, hostname, port, null, + null, null); cluster.addAccessUrl(clusterStatusClusterActivatedEvent.getInstanceId(), accessURL.toString()); clusterInstanceActivatedEvent.addAccessUrl(accessURL.toString()); } } } - if(cluster.getLoadBalancerIps().size() == 0) { + if (cluster.getLoadBalancerIps().size() == 0) { // Load balancer ips not given, use node public ips as load balancer ips List<String> nodePublicIpsList = new ArrayList<>(); nodePublicIpsList.addAll(nodePublicIps); cluster.setLoadBalancerIps(nodePublicIpsList); clusterInstanceActivatedEvent.setLoadBalancerIps(nodePublicIpsList); } - log.info(String.format("Access URLs generated for kubernetes services: [application] %s " + - "[cluster] %s [access-urls] %s", - applicationId, clusterId, clusterInstanceActivatedEvent.getAccessUrls())); + log.info(String.format("Access URLs generated for kubernetes services: [application] %s " + + "[cluster] %s [access-urls] %s", applicationId, clusterId, + clusterInstanceActivatedEvent.getAccessUrls())); } catch (URISyntaxException e) { log.error("Could not generate access URLs for Kubernetes services", e); } @@ -881,8 +875,8 @@ public class TopologyBuilder { getClusterPortMappings(applicationId, clusterId); for (ClusterPortMapping portMapping : portMappings) { for (String hostname : cluster.getHostNames()) { - URI accessURL = new URI(portMapping.getProtocol(), null, hostname, - portMapping.getPort(), null, null, null); + URI accessURL = new URI(portMapping.getProtocol(), null, hostname, portMapping.getPort(), + null, null, null); cluster.addAccessUrl(clusterStatusClusterActivatedEvent.getInstanceId(), accessURL.toString()); clusterInstanceActivatedEvent.addAccessUrl(accessURL.toString()); @@ -924,13 +918,14 @@ public class TopologyBuilder { private static int findProxyPort(String applicationId, String clusterId, String portName) { List<ClusterPortMapping> portMappings = CloudControllerContext.getInstance(). getClusterPortMappings(applicationId, clusterId); - for(ClusterPortMapping portMapping : portMappings) { - if(portMapping.getName().equals(portName)) { + for (ClusterPortMapping portMapping : portMappings) { + if (portMapping.getName().equals(portName)) { return portMapping.getProxyPort(); } } - throw new RuntimeException(String.format("Port mapping not found: [application] %s [cluster] %s " + - "[port-name] %s", applicationId, clusterId, portName)); + throw new RuntimeException( + String.format("Port mapping not found: [application] %s [cluster] %s " + "[port-name] %s", + applicationId, clusterId, portName)); } public static void handleClusterInactivateEvent(ClusterStatusClusterInactivateEvent clusterInactivateEvent) @@ -953,8 +948,8 @@ public class TopologyBuilder { ClusterInstanceInactivateEvent clusterInactivatedEvent1 = new ClusterInstanceInactivateEvent( clusterInactivateEvent.getAppId(), clusterInactivateEvent.getServiceName(), clusterInactivateEvent.getClusterId(), clusterInactivateEvent.getInstanceId()); + TopologyHolder.acquireWriteLock(); try { - TopologyHolder.acquireWriteLock(); ClusterInstance context = cluster.getInstanceContexts(clusterInactivateEvent.getInstanceId()); if (context == null) { throw new RuntimeException("Cluster Instance Context is not found for [cluster] " + @@ -1024,14 +1019,11 @@ public class TopologyBuilder { } finally { TopologyHolder.releaseWriteLock(); } - } public static void handleClusterTerminatingEvent(ClusterStatusClusterTerminatingEvent event) throws RegistryException { - TopologyHolder.acquireWriteLock(); - try { Topology topology = TopologyHolder.getTopology(); Cluster cluster = topology.getService(event.getServiceName()).
