You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by gn...@apache.org on 2013/08/01 14:34:58 UTC

svn commit: r1509206 - /aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java

Author: gnodet
Date: Thu Aug  1 12:34:58 2013
New Revision: 1509206

URL: http://svn.apache.org/r1509206
Log:
[ARIES-1090] Deadlock with ServiceRecipe

Modified:
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java?rev=1509206&r1=1509205&r2=1509206&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java Thu Aug  1 12:34:58 2013
@@ -86,9 +86,10 @@ public class ServiceRecipe extends Abstr
     private Map registrationProperties;
     private List<ServiceListener> listeners;
     private volatile Object service;
-    /** Only ever access when holding a lock on <code>this</code> */
+    private final Object monitor = new Object();
+    /** Only ever access when holding a lock on <code>monitor</code> */
     private int activeCalls;
-    /** Only ever access when holding a lock on <code>this</code> */
+    /** Only ever access when holding a lock on <code>monitor</code> */
     private boolean quiesce;
     private Collection<DestroyCallback> destroyCallbacks = new ArrayList<DestroyCallback>();
     
@@ -448,7 +449,7 @@ public class ServiceRecipe extends Abstr
 
     protected void incrementActiveCalls()
     {
-    	  synchronized(this) 
+    	  synchronized(monitor)
     	  {
     		    activeCalls++;	
 		    }
@@ -457,7 +458,7 @@ public class ServiceRecipe extends Abstr
   	protected void decrementActiveCalls() 
   	{
   	    List<DestroyCallback> callbacksToCall = new ArrayList<DestroyCallback>();
-      	synchronized(this) 
+      	synchronized(monitor)
       	{
       	    activeCalls--;
   			    if(quiesce && activeCalls == 0) {
@@ -475,7 +476,7 @@ public class ServiceRecipe extends Abstr
     {
     	  unregister();
     	  int calls;
-    	  synchronized (this) {
+    	  synchronized (monitor) {
             if(activeCalls != 0)
               destroyCallbacks.add(destroyCallback);
     	      quiesce = true;