Repository: stratos Updated Branches: refs/heads/stratos-4.1.x 848067c44 -> 77a413fbc
Fixing load balancer ip duplicate issue and persisting it in topology Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/77a413fb Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/77a413fb Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/77a413fb Branch: refs/heads/stratos-4.1.x Commit: 77a413fbcfa9fc4f5bb7ac9a45fa455be9f7384a Parents: 848067c Author: Imesh Gunaratne <[email protected]> Authored: Wed Oct 14 20:14:19 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Wed Oct 14 20:14:19 2015 +0530 ---------------------------------------------------------------------- .../messaging/topology/TopologyBuilder.java | 17 +++++----- .../messaging/domain/topology/Cluster.java | 10 ------ .../ClusterInstanceActivatedProcessor.java | 35 ++++++++++++-------- 3 files changed, 29 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/77a413fb/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 30a0167..4351986 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 @@ -441,31 +441,29 @@ public class TopologyBuilder { createMemberStatusPublisher(StatisticsPublisherType.WSO2DAS); if (memInfoPublisher.isEnabled()) { - if (log.isDebugEnabled()) { - log.info("Publishing Member Information"); + if (log.isInfoEnabled()) { + log.info("Publishing member information to DAS..."); } String scalingDecisionId = memberContext.getProperties() .getProperty(StratosConstants.SCALING_DECISION_ID).getValue(); memInfoPublisher.publish(memberContext.getMemberId(), scalingDecisionId, memberContext.getInstanceMetadata()); } else { - log.warn("Member Information Publisher is not enabled"); + log.warn("Member information publisher is not enabled"); } if (memStatusPublisher.isEnabled()) { - if (log.isDebugEnabled()) { - log.debug("Publishing Member Status to DAS"); + if (log.isInfoEnabled()) { + log.info("Publishing member status to DAS..."); } memStatusPublisher.publish(timestamp, applicationId, memberContext.getClusterId(), clusterAlias, memberContext.getClusterInstanceId(), memberContext.getCartridgeType(), memberContext.getNetworkPartitionId(), memberContext.getPartition().getId(), memberContext.getMemberId(), MemberStatus.Initialized.toString()); } else { - log.warn("Member Status Publisher is not enabled"); + log.warn("Member status publisher is not enabled"); } } - } finally - - { + } finally { TopologyManager.releaseWriteLock(); } } @@ -893,6 +891,7 @@ public class TopologyBuilder { // 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 " + http://git-wip-us.apache.org/repos/asf/stratos/blob/77a413fb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java index 1808cfd..6b8ca30 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java @@ -376,16 +376,6 @@ public class Cluster implements Serializable { this.loadBalancerIps = loadBalancerIps; } - public void addLoadBalancerIps(List<String> loadBalancerIps) { - if(loadBalancerIps == null) { - return; - } - if(this.loadBalancerIps == null) { - this.loadBalancerIps = new ArrayList<String>(); - } - this.loadBalancerIps.addAll(loadBalancerIps); - } - @Override public String toString() { return String.format("[serviceName=%s, clusterId=%s, autoscalePolicyName=%s, deploymentPolicyName=%s, " + http://git-wip-us.apache.org/repos/asf/stratos/blob/77a413fb/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceActivatedProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceActivatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceActivatedProcessor.java index 98f4bd1..a1448cb 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceActivatedProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceActivatedProcessor.java @@ -118,27 +118,34 @@ public class ClusterInstanceActivatedProcessor extends MessageProcessor { return false; } } else { - // Apply changes to the topology - cluster.addAccessUrlList(event.getInstanceId(), event.getAccessUrls()); - cluster.addLoadBalancerIps(event.getLoadBalancerIps()); - - ClusterInstance context = cluster.getInstanceContexts(event.getInstanceId()); - if (context == null) { - log.warn("Cluster instance context is not found for [cluster] " + - event.getClusterId() + " [instance-id] " + - event.getInstanceId()); + ClusterInstance clusterInstance = cluster.getInstanceContexts(event.getInstanceId()); + if (clusterInstance == null) { + log.warn(String.format("Cluster instance not found: [application] %s [cluster] %s [instance-id] %s", + event.getAppId(), event.getClusterId(), event.getInstanceId())); return false; } - ClusterStatus status = ClusterStatus.Active; - if (!context.isStateTransitionValid(status)) { - log.error("Invalid state transition from " + context.getStatus() + " to " + status); + if(clusterInstance.getStatus() == ClusterStatus.Active) { + log.debug(String.format("Cluster instance is already activated, event ignored: [application] %s " + + "[cluster] %s [instance-id] %s", event.getAppId(), event.getClusterId(), event.getInstanceId())); + } + else { + // Apply changes to the topology + cluster.addAccessUrlList(event.getInstanceId(), event.getAccessUrls()); + if((event.getLoadBalancerIps() != null) && (event.getLoadBalancerIps().size() > 0)) { + // Overwrite load balancer ips if new values found in cluster activated event + cluster.setLoadBalancerIps(event.getLoadBalancerIps()); + } + + ClusterStatus status = ClusterStatus.Active; + if (!clusterInstance.isStateTransitionValid(status)) { + log.error("Invalid state transition from " + clusterInstance.getStatus() + " to " + status); + } + clusterInstance.setStatus(status); } - context.setStatus(status); } // Notify event listeners notifyEventListeners(event); return true; } - }
