You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/11/03 08:32:45 UTC
[30/50] [abbrv] moving applications stuff to autoscaler - II
http://git-wip-us.apache.org/repos/asf/stratos/blob/c42d7c1d/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/updater/ApplicationsUpdater.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/updater/ApplicationsUpdater.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/updater/ApplicationsUpdater.java
index bbbfbf5..e987abf 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/updater/ApplicationsUpdater.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/applications/updater/ApplicationsUpdater.java
@@ -23,8 +23,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.messaging.domain.applications.locking.ApplicationLock;
import org.apache.stratos.messaging.domain.applications.locking.ApplicationLockHierarchy;
-import org.apache.stratos.messaging.domain.topology.locking.TopologyLock;
-import org.apache.stratos.messaging.domain.topology.locking.TopologyLockHierarchy;
+import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager;
import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
/**
@@ -67,21 +66,21 @@ public class ApplicationsUpdater {
// Top level locks - should be used to lock the entire Topology
/**
- * Acquires write lock for the Complete Topology
+ * Acquires write lock for all Applications
*/
- public static void acquireWriteLock() {
+ public static void acquireWriteLockForApplications() {
if(log.isDebugEnabled()) {
- log.debug("Write lock acquired for Topology");
+ log.debug("Write lock acquired for Applications");
}
applicationLockHierarchy.getApplicationLock().acquireWriteLock();
}
/**
- * Releases write lock for the Complete Topology
+ * Releases write lock for all Applications
*/
- public static void releaseWriteLock() {
+ public static void releaseWriteLockForApplications() {
if(log.isDebugEnabled()) {
- log.debug("Write lock released for Topology");
+ log.debug("Write lock released for Applications");
}
applicationLockHierarchy.getApplicationLock().releaseWritelock();
}
@@ -94,9 +93,9 @@ public class ApplicationsUpdater {
public static void acquireWriteLockForApplication (String appId) {
// acquire read lock for all Applications
- TopologyManager.acquireReadLockForApplications();
+ ApplicationManager.acquireReadLockForApplications();
- ApplicationLock applicationLock = applicationLockHierarchy.getLock(appId);
+ ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(appId);
if (applicationLock == null) {
handleLockNotFound("Topology lock not found for Application " + appId);
@@ -116,7 +115,7 @@ public class ApplicationsUpdater {
*/
public static void releaseWriteLockForApplication (String appId) {
- ApplicationLock applicationLock = applicationLockHierarchy.getLock(appId);
+ ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(appId);
if (applicationLock == null) {
handleLockNotFound("Topology lock not found for Application " + appId);
@@ -129,7 +128,7 @@ public class ApplicationsUpdater {
}
// release read lock for all Applications
- TopologyManager.releaseReadLockForApplications();
+ ApplicationManager.releaseReadLockForApplications();
}
private static void handleLockNotFound (String errorMsg) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/c42d7c1d/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 787ac74..ea1f83b 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
@@ -149,21 +149,6 @@ public class CompleteTopologyMessageProcessor extends MessageProcessor {
}
}
- // add existing Applications to Topology
- Collection<Application> applications = event.getTopology().getApplications();
- if (applications != null && !applications.isEmpty()) {
- for (Application application : applications) {
- topology.addApplication(application);
- if (log.isDebugEnabled()) {
- log.debug("Application with id [ " + application.getUniqueIdentifier() + " ] added to Topology");
- }
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug("No Application information found in Complete Topology event");
- }
- }
-
if (log.isInfoEnabled()) {
log.info("Topology initialized");
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c42d7c1d/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 9867223..e4b1c66 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
@@ -83,27 +83,7 @@ public class TopologyUpdater {
topologyLockHierarchy.getCompleteTopologyLock().releaseWritelock();
}
- // Application and Service write locks
- /**
- * Acquires write lock for the all Applications
- */
- public static void acquireWriteLockForApplications() {
- if(log.isDebugEnabled()) {
- log.debug("Write lock acquired for Applications");
- }
- topologyLockHierarchy.getApplicatioLock().acquireWriteLock();
- }
-
- /**
- * Releases write lock for the all Applications
- */
- public static void releaseWriteLockForApplications() {
- if(log.isDebugEnabled()) {
- log.debug("Write lock released for Applications");
- }
- topologyLockHierarchy.getApplicatioLock().releaseWritelock();
- }
-
+ // Service write locks
/**
* Acquires write lock for the all Services
*/
@@ -218,52 +198,6 @@ public class TopologyUpdater {
TopologyManager.releaseReadLockForService(serviceName);
}
- /**
- * Acquires write lock for the Application
- *
- * @param appId Application id
- */
- public static void acquireWriteLockForApplication (String appId) {
-
- // acquire read lock for all Applications
- TopologyManager.acquireReadLockForApplications();
-
- TopologyLock topologyAppLock = topologyLockHierarchy.getTopologyLockForApplication(appId);
- if (topologyAppLock == null) {
- handleLockNotFound("Topology lock not found for Application " + appId);
-
- } else {
- // now, lock Application
- topologyAppLock.acquireWriteLock();
- if(log.isDebugEnabled()) {
- log.debug("Write lock acquired for Application " + appId);
- }
- }
- }
-
- /**
- * Releases write lock for the Application
- *
- * @param appId Application id
- */
- public static void releaseWriteLockForApplication (String appId) {
-
- TopologyLock topologyAppLock = topologyLockHierarchy.getTopologyLockForApplication(appId);
- if (topologyAppLock == null) {
- handleLockNotFound("Topology lock not found for Application " + appId);
-
- } else {
- // release App lock
- topologyAppLock.releaseWritelock();
- if(log.isDebugEnabled()) {
- log.debug("Write lock released for Application " + appId);
- }
- }
-
- // release read lock for all Applications
- TopologyManager.releaseReadLockForApplications();
- }
-
private static void handleLockNotFound (String errorMsg) {
log.warn(errorMsg);
//throw new RuntimeException(errorMsg);
http://git-wip-us.apache.org/repos/asf/stratos/blob/c42d7c1d/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/applications/ApplicationManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/applications/ApplicationManager.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/applications/ApplicationManager.java
new file mode 100644
index 0000000..0c3aa0e
--- /dev/null
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/applications/ApplicationManager.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.message.receiver.applications;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.messaging.domain.applications.Applications;
+import org.apache.stratos.messaging.domain.applications.locking.ApplicationLock;
+import org.apache.stratos.messaging.domain.applications.locking.ApplicationLockHierarchy;
+
+public class ApplicationManager {
+
+ private static final Log log = LogFactory.getLog(ApplicationManager.class);
+
+ private static volatile Applications applications;
+ private static volatile ApplicationLockHierarchy applicationLockHierarchy =
+ ApplicationLockHierarchy.getInstance();
+
+ public static Applications getApplications () {
+
+ if (applications == null) {
+ synchronized (ApplicationManager.class){
+ if (applications == null) {
+ applications = new Applications();
+ if(log.isDebugEnabled()) {
+ log.debug("Applications object created");
+ }
+ }
+ }
+ }
+ return applications;
+ }
+
+ /**
+ * Acquires read lock for all Applications
+ */
+ public static void acquireReadLockForApplications() {
+ if(log.isDebugEnabled()) {
+ log.debug("Read lock acquired for Applications");
+ }
+ applicationLockHierarchy.getApplicationLock().acquireReadLock();
+ }
+
+ /**
+ * Releases read lock for all Applications
+ */
+ public static void releaseReadLockForApplications() {
+ if(log.isDebugEnabled()) {
+ log.debug("Read lock released for Applications");
+ }
+ applicationLockHierarchy.getApplicationLock().releaseReadLock();
+ }
+
+ /**
+ * Acquires read lock for an Application
+ *
+ * @param applicationId Application Id to acquire read lock
+ */
+ public static void acquireReadLockForApplication(String applicationId) {
+
+ // acquire read lock for all Applications
+ acquireReadLockForApplications();
+
+ ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(applicationId);
+ if (applicationLock == null) {
+ handleLockNotFound("Application lock not found for Application " + applicationId);
+
+ } else {
+ applicationLock.acquireReadLock();
+ if(log.isDebugEnabled()) {
+ log.debug("Read lock acquired for Application " + applicationId);
+ }
+ }
+ }
+
+ /**
+ * Releases read lock for an Application
+ *
+ * @param applicationId Application Id to release read lock
+ */
+ public static void releaseReadLockForApplication(String applicationId) {
+
+ ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(applicationId);
+ if (applicationLock == null) {
+ handleLockNotFound("Application lock not found for Application " + applicationId);
+
+ } else {
+ applicationLock.releaseReadLock();
+ if(log.isDebugEnabled()) {
+ log.debug("Read lock released for Application " + applicationId);
+ }
+ }
+
+ // release read lock for all Applications
+ releaseReadLockForApplications();
+ }
+
+ private static void handleLockNotFound (String errorMsg) {
+ log.warn(errorMsg);
+ //throw new RuntimeException(errorMsg);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c42d7c1d/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 1d74616..159e128 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
@@ -85,26 +85,7 @@ public class TopologyManager {
topologyLockHierarchy.getCompleteTopologyLock().releaseReadLock();
}
- // Application and Service read locks
- /**
- * Acquires read lock for the all Applications
- */
- public static void acquireReadLockForApplications() {
- if(log.isDebugEnabled()) {
- log.debug("Read lock acquired for Applications");
- }
- topologyLockHierarchy.getApplicatioLock().acquireReadLock();
- }
-
- /**
- * Releases read lock for the all Applications
- */
- public static void releaseReadLockForApplications() {
- if(log.isDebugEnabled()) {
- log.debug("Read lock released for Applications");
- }
- topologyLockHierarchy.getApplicatioLock().releaseReadLock();
- }
+ // Service read locks
/**
* Acquires read lock for the all Services
@@ -222,52 +203,6 @@ public class TopologyManager {
releaseReadLockForService(serviceName);
}
- /**
- * Acquires read lock for the Application
- *
- * @param appId Application id
- */
- public static void acquireReadLockForApplication (String appId) {
-
- // acquire read lock for all Applications
- acquireReadLockForApplications();
-
- TopologyLock topologyAppLock = topologyLockHierarchy.getTopologyLockForApplication(appId);
- if (topologyAppLock == null) {
- handleLockNotFound("Topology lock not found for Application " + appId);
-
- } else {
- // now, lock Application
- topologyAppLock.acquireReadLock();
- if(log.isDebugEnabled()) {
- log.debug("Read lock acquired for Application " + appId);
- }
- }
- }
-
- /**
- * Releases read lock for the Application
- *
- * @param appId Application id
- */
- public static void releaseReadLockForApplication (String appId) {
-
- TopologyLock topologyAppLock = topologyLockHierarchy.getTopologyLockForApplication(appId);
- if (topologyAppLock == null) {
- handleLockNotFound("Topology lock not found for Application " + appId);
-
- } else {
- // release App lock
- topologyAppLock.releaseReadLock();
- if(log.isDebugEnabled()) {
- log.debug("Read lock released for Application " + appId);
- }
- }
-
- // release read lock for all Applications
- releaseReadLockForApplications();
- }
-
private static void handleLockNotFound (String errorMsg) {
log.warn(errorMsg);
//throw new RuntimeException(errorMsg);