[
https://issues.apache.org/jira/browse/FELIX-3661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pierre De Rop updated FELIX-3661:
---------------------------------
Attachment: msg.log
attached the log file, with ds.loglevel=debug.
> Scr sometimes does not invoke Reference bind method
> ---------------------------------------------------
>
> Key: FELIX-3661
> URL: https://issues.apache.org/jira/browse/FELIX-3661
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Reporter: Pierre De Rop
> Attachments: msg.log
>
>
> With scr from trunk: sometimes, a satisfied Reference bind method is not
> invoked.
> I'm not sure, but this might be related to the FELIX-3659 issue and/or when
> Reference types are org.osgi.service.ComponentFactory types.
> The use case is the following:
> - I have a DS component (name="agent"), which depends on the CompositeFactory
> service (ref is dynamic, optional, cardinality=0..N).
> - the "agent" component is started (at this point), the CompositeFactory is
> not yet available
> - next, the implementation bundle for the CompositeFactory service starts and
> registers the service, using bundleContext.registerService.
> - but the "agent" component is not invoked in its
> bindCompositeFactory(CompositeFactory) method.
> I have attached a logfile which illustrates the problem.
> 1) Line 8491: the '"agent" component is being created, and some bind method
> are successfully invoked, except the "bindCompositeFactory" method (but this
> is normal since the service is optional, and not yet available):
> 2012-09-11 23:09:21,147 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [agent] For dependency loggerRepository, optional: false; to bind:
> {[org.apache.log4j.spi.LoggerRepository]=org.apache.felix.scr.impl.manager.AbstractComponentManager$RefPair@1b7a875}
> 2012-09-11 23:09:21,147 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [agent] invoking bind: bindLoggerRepository
> 2012-09-11 23:09:21,147 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [agent] For dependency compositeFactory, optional: true; to bind: {}
> (here the bind for loggerRepository is invoked, but not for compositeFactory
> ... normal behavior for now.
> 2) at line 8644, the CompositeFactory service is being registered, but we see
> the "component not yet created, assuming bind method call succeeded" log and
> the bindCompositeFactory method on the "agent" component is not invoked.
> However, another
> "com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand" DS
> component is succesfully bound with the CompositeFactory, but this component
> depends on the CompositeService, using a ServiceReference type, instead of
> the actual CompositeFactory type, in the bind method signature ...
> 2012-09-11 23:09:21,222 ProxyAppReporter-FastCacheListener WARN
> com.alcatel_lucent.as.service.composite.impl.CompositeFactoryImpl -
> Registering CompositeFactory ...
> 2012-09-11 23:09:21,222 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [agent] Dependency Manager: Adding Service
> com.alcatel_lucent.as.service.composite.CompositeFactory/565
> 2012-09-11 23:09:21,222 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [agent] DependencyManager : component not yet created, assuming bind method
> call succeeded
> 2012-09-11 23:09:21,223 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.GogoCompositeCommand]
> Dependency Manager: Adding Service
> com.alcatel_lucent.as.service.composite.CompositeFactory/565
> 2012-09-11 23:09:21,223 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.GogoCompositeCommand]
> DependencyManager : component not yet created, assuming bind method call
> succeeded
> 2012-09-11 23:09:21,223 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> Dependency Manager: Adding Service
> com.alcatel_lucent.as.service.composite.CompositeFactory/565
> 2012-09-11 23:09:21,223 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> getting bind: bindCompositeFactory
> 2012-09-11 23:09:21,224 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> Locating method bindCompositeFactory in class
> com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand
> 2012-09-11 23:09:21,224 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> doFindMethod: Looking for method
> com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand.bindCompositeFactory
> 2012-09-11 23:09:21,224 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> doFindMethod: Found Method public void
> com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand.bindCompositeFactory(org.osgi.framework.ServiceReference)
> 2012-09-11 23:09:21,224 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> Found bind method: public void
> com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand.bindCompositeFactory(org.osgi.framework.ServiceReference)
> 2012-09-11 23:09:21,224 ProxyAppReporter-FastCacheListener DEBUG osgi -
> [com.alcatel_lucent.as.service.composite.impl.shell.FelixCompositeCommand]
> invoking bind: bindCompositeFactory
> 2012-09-11 23:09:21,224 ProxyAppReporter-FastCacheListener INFO
> osgi.event.service - Service registered by bundle
> com.alcatel_lucent.as.service.composite.impl(1.1100.01)
>
> {objectClass=[com.alcatel_lucent.as.service.composite.CompositeFactory],service.id=565}
> Hope that the log file will be enough to understand the issue ?
--
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