[jboss-cvs] JBossAS SVN: r100889 - projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 11 13:16:40 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-02-11 13:16:40 -0500 (Thu, 11 Feb 2010)
New Revision: 100889

Modified:
   projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
Log:
[JBKERNEL-95] Tidy up the lock usage in getContextInternal()

Modified: projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java
===================================================================
--- projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-11 17:44:28 UTC (rev 100888)
+++ projects/kernel/trunk/dependency/src/main/java/org/jboss/dependency/plugins/AbstractController.java	2010-02-11 18:16:40 UTC (rev 100889)
@@ -529,7 +529,10 @@
       if (name == null)
          throw new IllegalArgumentException("Null name");
 
-      lockRead();
+      boolean needsReadLock = lock.isWriteLockedByCurrentThread() == false;
+      
+      if (needsReadLock)
+         lockRead();
       try
       {
          ControllerContext result = getRegisteredControllerContext(name, false);
@@ -543,7 +546,7 @@
                if (enableOnDemand && ControllerMode.ON_DEMAND.equals(result.getMode()))
                {
                   //enableOnDemand gets the write lock so unlock the read lock
-                  if (initiatingController == this)
+                  if (needsReadLock && initiatingController == this)
                      unlockRead();
                   try
                   {
@@ -556,7 +559,7 @@
                   }
                   finally
                   {
-                     if (initiatingController == this)
+                     if (needsReadLock && initiatingController == this)
                         lockRead(); 
                   }
                }
@@ -567,7 +570,8 @@
       }
       finally
       {
-         unlockRead();
+         if (needsReadLock)
+            unlockRead();
       }
    }
 




More information about the jboss-cvs-commits mailing list