You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2013/12/08 20:44:21 UTC

[jira] [Created] (FELIX-4349) Synchronization issue in ComponentRegistry

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)