Guillaume Nodet created FELIX-4349:
--------------------------------------

             Summary: Synchronization issue in ComponentRegistry
                 Key: FELIX-4349
                 URL: https://issues.apache.org/jira/browse/FELIX-4349
             Project: Felix
          Issue Type: Bug
          Components: Declarative Services (SCR)
    Affects Versions: scr-1.8.0
            Reporter: Guillaume Nodet
             Fix For: scr-1.8.2


Investigating an issue in some of our integration test, we found that the 
ComponentRegistry#m_missingDependencies field is wrongly synchronized.

Two methods are accessing this Map, registerMissingDependency and 
missingServicePresent, but only the first one is synchronized.

Patch proposed:
{code}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java 
b/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
index 9b307a9..c40ab5f 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
@@ -660,7 +660,7 @@ public class ComponentRegistry implements ScrService, 
ServiceListener
         }
     }
 
-    public void missingServicePresent( final ServiceReference 
serviceReference, ComponentActorThread actor )
+    public synchronized void missingServicePresent( final ServiceReference 
serviceReference, ComponentActorThread actor )
     {
         final List<Entry> dependencyManagers = m_missingDependencies.remove( 
serviceReference );
         if ( dependencyManagers != null )
{code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to