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 2015/02/06 10:57:32 UTC
stratos git commit: Introducing logic to create application lock
objects on demand
Repository: stratos
Updated Branches:
refs/heads/master 8dc3c4622 -> a3bd4506e
Introducing logic to create application lock objects on demand
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a3bd4506
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a3bd4506
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a3bd4506
Branch: refs/heads/master
Commit: a3bd4506e09219213acb01ef8cd86152544b9bff
Parents: 8dc3c46
Author: Imesh Gunaratne <im...@apache.org>
Authored: Fri Feb 6 15:10:00 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Fri Feb 6 15:27:15 2015 +0530
----------------------------------------------------------------------
.../domain/application/Applications.java | 4 --
.../locking/ApplicationLockHierarchy.java | 27 +++++---------
.../updater/ApplicationsUpdater.java | 39 +++-----------------
.../application/ApplicationManager.java | 35 +++---------------
4 files changed, 22 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/a3bd4506/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java
index 07c83ec..a078392 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Applications.java
@@ -21,7 +21,6 @@ package org.apache.stratos.messaging.domain.application;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.messaging.domain.application.locking.ApplicationLock;
import org.apache.stratos.messaging.domain.application.locking.ApplicationLockHierarchy;
import java.io.Serializable;
@@ -42,9 +41,6 @@ public class Applications implements Serializable {
public synchronized void addApplication (Application application) {
this.applicationMap.put(application.getUniqueIdentifier(), application);
- // TODO: It would be better to create the application lock on demand rather than initializing here
- ApplicationLockHierarchy.getInstance().addApplicationLock(application.getUniqueIdentifier(),
- new ApplicationLock());
}
public Application getApplication (String appId) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/a3bd4506/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/locking/ApplicationLockHierarchy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/locking/ApplicationLockHierarchy.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/locking/ApplicationLockHierarchy.java
index 8bdf29e..dd782cc 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/locking/ApplicationLockHierarchy.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/locking/ApplicationLockHierarchy.java
@@ -55,32 +55,25 @@ public class ApplicationLockHierarchy {
return applicationLockHierarchy;
}
- public void addApplicationLock (String appId, final ApplicationLock appLock) {
-
- if (!appIdToApplicationLockMap.containsKey(appId)) {
- synchronized (appIdToApplicationLockMap) {
- if (!appIdToApplicationLockMap.containsKey(appId)) {
- appIdToApplicationLockMap.put(appId, appLock);
- log.info("Added lock for Application " + appId);
+ public ApplicationLock getLockForApplication(String appId) {
+ ApplicationLock applicationLock = appIdToApplicationLockMap.get(appId);
+ if(applicationLock == null) {
+ synchronized (ApplicationLockHierarchy.class) {
+ if(applicationLock == null) {
+ applicationLock = new ApplicationLock();
+ appIdToApplicationLockMap.put(appId, applicationLock);
}
}
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Topology Lock for Application " + appId + " already exists");
- }
}
- }
-
- public ApplicationLock getLockForApplication(String appId) {
- return appIdToApplicationLockMap.get(appId);
+ return applicationLock;
}
public void removeLockForApplication (String appId) {
if (appIdToApplicationLockMap.remove(appId) != null) {
- log.info("Removed lock for Application " + appId);
+ log.info("Removed lock for application: [application-id] " + appId);
} else {
if (log.isDebugEnabled()) {
- log.debug("Lock already removed for Application " + appId);
+ log.debug("Lock already removed for application: [application-id] " + appId);
}
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a3bd4506/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/updater/ApplicationsUpdater.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/updater/ApplicationsUpdater.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/updater/ApplicationsUpdater.java
index c64910a..eec2a66 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/updater/ApplicationsUpdater.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/application/updater/ApplicationsUpdater.java
@@ -23,7 +23,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.messaging.domain.application.locking.ApplicationLock;
import org.apache.stratos.messaging.domain.application.locking.ApplicationLockHierarchy;
-import org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
/**
* Used to lock the Topology for writes by messaging component
@@ -90,20 +89,10 @@ public class ApplicationsUpdater {
* @param appId Application id
*/
public static void acquireWriteLockForApplication(String appId) {
-
- // acquire read lock for all Applications
- ApplicationManager.acquireReadLockForApplications();
-
ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(appId);
- if (applicationLock == null) {
- handleLockNotFound("Topology lock not found for Application " + appId);
-
- } else {
- // now, lock Application
- applicationLock.acquireWriteLock();
- if (log.isDebugEnabled()) {
- log.debug("Write lock acquired for Application " + appId);
- }
+ applicationLock.acquireWriteLock();
+ if (log.isDebugEnabled()) {
+ log.debug("Write lock acquired for Application " + appId);
}
}
@@ -113,26 +102,10 @@ public class ApplicationsUpdater {
* @param appId Application id
*/
public static void releaseWriteLockForApplication(String appId) {
-
ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(appId);
- if (applicationLock == null) {
- handleLockNotFound("Topology lock not found for Application " + appId);
-
- } else {
- // release App lock
- applicationLock.releaseWriteLock();
- if (log.isDebugEnabled()) {
- log.debug("Write lock released for Application " + appId);
- }
+ applicationLock.releaseWriteLock();
+ if (log.isDebugEnabled()) {
+ log.debug("Write lock released for application: [application-id] " + appId);
}
-
- // release read lock for all Applications
- ApplicationManager.releaseReadLockForApplications();
}
-
- private static void handleLockNotFound(String errorMsg) {
- log.warn(errorMsg);
- //throw new RuntimeException(errorMsg);
- }
-
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a3bd4506/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationManager.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationManager.java
index 52f80ca..42021ba 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationManager.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/application/ApplicationManager.java
@@ -74,19 +74,10 @@ public class ApplicationManager {
* @param applicationId Application Id to acquire read lock
*/
public static synchronized void acquireReadLockForApplication(String applicationId) {
-
- // acquire read lock for all Applications
- //acquireReadLockForApplications();
-
ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(applicationId);
- if (applicationLock == null) {
- handleLockNotFound("Application lock not found: [application-id] " + applicationId);
-
- } else {
- applicationLock.acquireReadLock();
- if(log.isDebugEnabled()) {
- log.debug("Read lock acquired: [application-id] " + applicationId);
- }
+ applicationLock.acquireReadLock();
+ if (log.isDebugEnabled()) {
+ log.debug("Read lock acquired: [application-id] " + applicationId);
}
}
@@ -96,24 +87,10 @@ public class ApplicationManager {
* @param applicationId Application Id to release read lock
*/
public static synchronized void releaseReadLockForApplication(String applicationId) {
-
ApplicationLock applicationLock = applicationLockHierarchy.getLockForApplication(applicationId);
- if (applicationLock == null) {
- handleLockNotFound("Application lock not found: [application-id] " + applicationId);
-
- } else {
- applicationLock.releaseReadLock();
- if(log.isDebugEnabled()) {
- log.debug("Read lock released: [application-id] " + applicationId);
- }
+ applicationLock.releaseReadLock();
+ if (log.isDebugEnabled()) {
+ log.debug("Read lock released: [application-id] " + applicationId);
}
-
- // release read lock for all Applications
- //releaseReadLockForApplications();
- }
-
- private static void handleLockNotFound (String errorMsg) {
- log.warn(errorMsg);
- //throw new RuntimeException(errorMsg);
}
}