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

Reply via email to