You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/10/10 11:45:01 UTC

git commit: fixing bugs

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping 62387055a -> d11103577


fixing bugs


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

Branch: refs/heads/4.0.0-grouping
Commit: d11103577c1f86e59d0fdcdb3aa4db96bbef086e
Parents: 6238705
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Fri Oct 10 15:14:26 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Fri Oct 10 15:14:26 2014 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/monitor/Monitor.java     |  4 +--
 .../CompleteTopologyMessageProcessor.java       | 27 +++++++++++++++++---
 .../topology/updater/TopologyUpdater.java       |  2 +-
 .../receiver/topology/TopologyManager.java      |  2 +-
 4 files changed, 28 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d1110357/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
index 800ed64..3cdcdc5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java
@@ -131,7 +131,7 @@ public abstract class Monitor implements EventHandler {
                 }
                 Cluster cluster;
                 //acquire read lock for the service and cluster
-                TopologyManager.acquireReadLockForCluster(clusterId, serviceName);
+                TopologyManager.acquireReadLockForCluster(serviceName, clusterId);
                 try {
                     Topology topology = TopologyManager.getTopology();
                     if (topology.serviceExists(serviceName)) {
@@ -154,7 +154,7 @@ public abstract class Monitor implements EventHandler {
                     }
                 } finally {
                     //release read lock for the service and cluster
-                    TopologyManager.releaseReadLockForCluster(clusterId, serviceName);
+                    TopologyManager.releaseReadLockForCluster(serviceName, clusterId);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d1110357/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java
index 6414951..f6af300 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/CompleteTopologyMessageProcessor.java
@@ -21,6 +21,8 @@ package org.apache.stratos.messaging.message.processor.topology;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.topology.locking.TopologyLock;
+import org.apache.stratos.messaging.domain.topology.locking.TopologyLockHierarchy;
 import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
 import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter;
 import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter;
@@ -55,9 +57,7 @@ public class CompleteTopologyMessageProcessor extends MessageProcessor {
                 TopologyUpdater.acquireWriteLock();
 
                 try {
-                    if (!topology.isInitialized()) {
-                        doProcess(event, topology);
-                    }
+                    doProcess(event, topology);
 
                 } finally {
                     TopologyUpdater.releaseWriteLock();
@@ -79,6 +79,9 @@ public class CompleteTopologyMessageProcessor extends MessageProcessor {
 
     private void doProcess (CompleteTopologyEvent event, Topology topology) {
 
+        // add locks for all the Clusters currently in Topology
+        addTopologyLocksForClusters(event.getTopology().getServices());
+
         // Apply service filter
         if (TopologyServiceFilter.getInstance().isActive()) {
             // Add services included in service filter
@@ -167,4 +170,22 @@ public class CompleteTopologyMessageProcessor extends MessageProcessor {
         // Set topology initialized
         topology.setInitialized(true);
     }
+
+
+    private void addTopologyLocksForClusters (Collection<Service> services) {
+
+        if (services == null) {
+            return;
+        }
+
+        for (Service service : services) {
+            // get all the clusters and add locks
+            if (service.getClusters() != null) {
+                for (Cluster aCluster: service.getClusters()) {
+                    TopologyLockHierarchy.getInstance().addClusterLock(aCluster.getClusterId(),
+                            new TopologyLock());
+                }
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d1110357/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/updater/TopologyUpdater.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/updater/TopologyUpdater.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/updater/TopologyUpdater.java
index 3da5835..9867223 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/updater/TopologyUpdater.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/updater/TopologyUpdater.java
@@ -59,7 +59,7 @@ public class TopologyUpdater {
 
     private static final Log log = LogFactory.getLog(TopologyUpdater.class);
 
-    private static final TopologyLockHierarchy topologyLockHierarchy = TopologyLockHierarchy.getInstance();
+    private static volatile TopologyLockHierarchy topologyLockHierarchy = TopologyLockHierarchy.getInstance();
 
     // Top level locks - should be used to lock the entire Topology
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/d1110357/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
index fbb2faf..1d74616 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyManager.java
@@ -62,7 +62,7 @@ public class TopologyManager {
     private static final Log log = LogFactory.getLog(TopologyManager.class);
 
     private static volatile Topology topology;
-    private static final TopologyLockHierarchy topologyLockHierarchy =
+    private static volatile TopologyLockHierarchy topologyLockHierarchy =
             TopologyLockHierarchy.getInstance();
 
     /**