You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Pierre De Rop (JIRA)" <ji...@apache.org> on 2009/11/27 21:23:22 UTC

[jira] Updated: (FELIX-1903) SCR sometimes does not activate components when configuration-policy is required

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

Pierre De Rop updated FELIX-1903:
---------------------------------

    Attachment: sequence_diagram.pdf

here is the sequence diagram.

> SCR sometimes does not activate components when configuration-policy is required
> --------------------------------------------------------------------------------
>
>                 Key: FELIX-1903
>                 URL: https://issues.apache.org/jira/browse/FELIX-1903
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>         Environment: linux fc10/jdk1.5
>            Reporter: Pierre De Rop
>         Attachments: sequence_diagram.pdf
>
>
> This issue is about the following post: http://www.mail-archive.com/dev@felix.apache.org/msg14019.html
> Use case: I have a component which declare configuration-policy="require", meaning that it must not be activated before the corresponding PID is available.
> But, even if SCR firsts detects that the pid is available, the component is then not activated, and ends up with the following log: "Missing required configuration, cannot activate".
> Please take a look at the mentioned post, in the DEV mailing list, everything is explained, with some logs.
> I also have attached to this post a sequence diagram which illustrates what is going on (well, as far as I understand):
> 1) In the sequence diagram, you will see that CM first provides the PID to SCR, by calling the ConfigurationComponentRegistry.configurationEvent() method.
> But in this method, the getComponent(pid) returns null, because the component's bundle is probably not yet started, at the time we are called by CM.
> 2) Next, the component's bundle is started, and the Component Actor thread invokes ImmediatComponentManager.activateInternal() method, which invokes activate() in the Unsatisfied state, 
> 3) but, then, the hasConfiguration() method is invoked and returns null, and we then get the log " Missing required configuration, cannot activate".
> So, I have tried the attached patch which seems to resolve the issue: I just have modified the ImmediateComponentManager.hasConfiguration() in order to check if the PID is available from CM. 
> (Well, admittedly, the patch is probably dirty and I have added a static method in the Activator in order to get the bundle context, but it works ...)
> please tell me what you think;
> /pierre

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.