Jens Offenbach created FELIX-4851:
-------------------------------------
Summary: ConfigAdmin only forwards configuration events to
ConfigurationListeners which are provided by bundles that are in state ACTIVE
Key: FELIX-4851
URL: https://issues.apache.org/jira/browse/FELIX-4851
Project: Felix
Issue Type: Bug
Components: Configuration Admin
Affects Versions: configadmin-1.8.2
Reporter: Jens Offenbach
Fix For: configadmin-1.8.4
I am facing a serious problem with the Felix ConfigAdmin in combination with
Felix SCR. Let us assume that the SCR bundle becomes activated at last and
activates a Component that creates a configuration which itself is a
precondition for the instantiation of another component
(ConfigurationPolicy#REQUIRE). In this case the Felix ConfigAdmin does not
deliver the configuration update event to SCR, although SCR has registered a
ConfigurationListener in the OSGi Service Registry.
The problem is caused by line 2029 of the class ConfigurationManager (Version:
1.8.3-SNAPSHOT):
if ( listenerProvider[serviceIndex].getState() == Bundle.ACTIVE &&
this.listeners[serviceIndex] != null )
In this scenario, the SCR bundle is in state STARTING and reaches the ACTIVE
state directly after all available component have been activated. Because of
missing Configuration Events caused by the Felix ConfigAdmin, SCR is not able
to activate all those components whose preconditions are actually fulfilled.
I highly recommend removing the bundle state check and change line 2029 into:
if ( this.listeners[serviceIndex] != null ).
It is up to the developer to decide, in which bundle state configuration events
are considered to be important or not. In the SCR scenario, the developers rely
on the fact that configuration events are delivered independently of their
bundle state.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)