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


This issue is about the following post: 
http://www.mail-archive.com/[email protected]/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.

Reply via email to