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)