[
https://issues.apache.org/jira/browse/FELIX-4349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13843053#comment-13843053
]
Guillaume Nodet commented on FELIX-4349:
----------------------------------------
I've raised FELIX-4350 to cover my initial problem and attached a log with some
SCR debug statements.
> 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
> Assignee: 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.4#6159)