[ 
https://issues.apache.org/jira/browse/FELIX-4055?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Jencks resolved FELIX-4055.
---------------------------------

    Resolution: Fixed

> [DS] Component instance unset but remains in Active state
> ---------------------------------------------------------
>
>                 Key: FELIX-4055
>                 URL: https://issues.apache.org/jira/browse/FELIX-4055
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.8.0
>            Reporter: David Jencks
>            Assignee: David Jencks
>             Fix For: scr-1.8.0
>
>
> We observed something very odd with rev 1467353.  We have a delayed component 
> that is no longer used, so (I believe) the framework calls ungetService and 
> we dispose of the implementation object.  However it looks like the component 
> remains in the active state and subsequent calls to getService return null.
> Evidence from the logs:
> (using component): Deactivating dependency managers
> (peculiar component) getting deactivate: deactivate
> ...
> Unset and deconfigured implementation object for component *** in 
> deleteComponent for reason Unspecified
> ... 500 milliseconds later ...
> This thread collected dependencies
> getService won collecting dependencies, proceed to creating object. (returns 
> null).
> AFAICT the ungetService goes through this code:
>         void ungetService( ImmediateComponentManager dcm )
>         {
>             dcm.deleteComponent( 
> ComponentConstants.DEACTIVATION_REASON_UNSPECIFIED );
>             if ( dcm.enabled )
>             {
>                 dcm.changeState( Registered.getInstance() );
>             }
>         }
> which suggests that perhaps the enabled state is false.  This should have 
> produced a state change and in particular a service unregistration, and there 
> is no code that would be disabling any of the components.
> However we got into this state, there appears to be an over-reliance on 
> states in getService that is easy to fix and appears to be harmless, if there 
> is no implementation object we can just use Registered.getInstance() to 
> create it rather than state().



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to