[
https://issues.apache.org/jira/browse/FELIX-3126?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Meschberger closed FELIX-3126.
------------------------------------
Close after release
> SCR activates a service component while the containing bundle is stopping.
> --------------------------------------------------------------------------
>
> Key: FELIX-3126
> URL: https://issues.apache.org/jira/browse/FELIX-3126
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-1.6.0
> Environment: FELIX-3.2.2, SCR-1.6.0
> Reporter: Soren Petersen
> Assignee: Felix Meschberger
> Fix For: scr-1.6.2
>
>
> I've got the following setup:
> Bundle 1: Implements a pattern similar to the extender pattern. A bundle
> tracker monitors bundles containing a certain configuration entry. Each time
> a bundle with the coniguration entry enters or leaves the ACTIVE state, a
> service of the interface "com.example.bundle1.Bundle1Service" is unregistered
> and a new service with the same interface is re-registered.
> Bundle 2: Has an immediate service component with the following configuration:
> <component name="Bundle2Component" immediate="true"
> xmlns="http://www.osgi.org/xmlns/scr/v1.1.0">
>
> <implementation class="com.example.bundle2.TestComponent" />
> <service>
> <provide interface="java.lang.Object" />
> </service>
> <reference
> name="bundle1service"
> interface="com.example.bundle1.Bundle1Service"
> cardinality="1..1"
> policy="static"
> bind="setBundle1Service" />
> </component>
> Situation: Both bundles have been started. The service component from bundle
> 2 is active and the reference is bound to the current Bundle1Service exported
> from bundle 1.
> Now, when i stop bundle 2 the following occur:
> 1. The state of bundle 2 is changed to STOPPING
> 2. The state change is discovered by the service tracker in bundle 1 which
> causes it to unregister the Bundle1Service and then register a a new
> Bundle1Service.
> 3. The SCR discovers that the bundle1service reference of the component has
> become unsatisfied and deactivates the component.
> 4. The SCR discovers that the bundle1service reference of the component has
> become satisfied (with a new service) and activates the component.
> 5. The SCR tries to export the newly activated component as a service, but
> fails since the bundle is stopping.
> The problem seems to be that SCR has not discovered that the bundle is
> STOPPING and disabled the component. A simple fix might be to check whether
> to disable the component based on bundle status before activating a new
> instance of the component.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira