[ 
https://issues.apache.org/jira/browse/FELIX-2923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13618255#comment-13618255
 ] 

David Jencks commented on FELIX-2923:
-------------------------------------

I think with current code (march 2013) you will get a deadlock (which times 
out).  The moral is, don't register services in ds lifecycle methods.
ServiceC must be immediate?

making serviceA immediate is not foolproof since the service registration 
happens before the instance is created (per spec, may not have worked this way 
when you tried the code).  So at that point any other thread can try to get the 
service, resulting in _that_ thread making serviceA act just like a delayed 
component.
                
> Get a ServiceFactory.getService()  resulted in a cycle message when 
> registering a service inside a DS activation method
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-2923
>                 URL: https://issues.apache.org/jira/browse/FELIX-2923
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions:  scr-1.6.0
>            Reporter: David Humeniuk
>
> I've run into an issue with Felix SCR where I get the message:
> ServiceFactory.getService() resulted in a cycle
> The reason this appers to be occuring is because within an activation method 
> of a service component, call it ServiceAImpl (which provides ServiceA), the 
> component registers another service, call it ServiceB.
> I have another service component, call it ServiceCImpl, which depends on both 
> ServiceA and ServiceB. When ServiceAImpl registers ServiceB, ServiceCImpl is 
> attemted to be activated within the call to activate ServiceAImpl.  As part 
> of the activation, the ServiceCImpl binding methods are called (at least 
> attempted). When the binding method for ServiceA is attempted, the cycle is 
> detected and the component fails to initialize.
> I guess what doesn't make sense is why the SCR will activate ServiceCImpl 
> within the activation method of ServiceAImpl. I wouldn't think that 
> ServiceCImpl would be considered satisfied until after the activation method 
> has exited. Perhaps this is an issue of using declarative services while 
> still registering services directly with the framework?

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

Reply via email to