You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "David Jencks (JIRA)" <ji...@apache.org> on 2013/10/16 01:37:42 UTC

[jira] [Closed] (FELIX-4055) [DS] Component instance unset but remains in Active state

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

David Jencks closed FELIX-4055.
-------------------------------


> [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)