[
https://issues.apache.org/jira/browse/FELIX-5079?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Jencks resolved FELIX-5079.
---------------------------------
Resolution: Fixed
Fix Version/s: scr-2.0.4
Initial implementation in r1717854. This may not be the most elegant solution
but appears to work in practice. I don't know how to go about writing an
integration test for this.
> [DS] Not enough configuration listeners to deal with regions
> ------------------------------------------------------------
>
> Key: FELIX-5079
> URL: https://issues.apache.org/jira/browse/FELIX-5079
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-2.0.2
> Reporter: David Jencks
> Assignee: David Jencks
> Fix For: scr-2.0.4
>
>
> We implemented the global extender flag that lets DS deal with components in
> all regions (or in more spec terms all bundles everywhere in the framework
> regardless of visibility to the DS bundle) but there is only one
> ConfigurationListener registered with the DS bundle context. Obviously if
> there are different CA's in different regions this won't work.
> Another twist is that (apparently, according to Tom Watson) just because a
> bundle A can see a particular CA instance B does not mean that B can see a
> ConfigurationListener registered by A.
> This might work:
> 1. When a bundle to be extended arrives, and it has configurable components
> in it, we register a ServiceTracker for config admin with that bundle.
> 2. When the service tracker detects a CA, we check that it is a CA compatible
> with the DS CA class, and whether we already know about it.
> 3. if it's our kind of CA and we don't know about it, then we register a
> ConfigurationListener with the CA's bundle.
> 4. When the last service tracker knowing about a particular CA indicates the
> CA is leaving we unregister the ConfigurationListener (or when the last
> bundle using that CA stops)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)