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

Felix Meschberger commented on FELIX-2231:
------------------------------------------

The NullPointerException on 
"ConfiguredComponentHolder.configurationUpdated(ConfiguredComponentHolder.java:187)
 " is very likely a concurrency issue where configuration is provided after the 
component has already been disposed off due to the bundle being stopped (it 
seems).

This requires adding a check in the configurationUpdated and 
configurationDeleted methods to ensure for them to not do anything if the 
component has been disposed off already.

The messages:

   Cannot register Component Bundle:com.ibm.ws.transport.orb(id=19) 
org.osgi.service.component.ComponentException:
             The component name 'com.ibm.ws.transport.orb' has already been 
registered by Bundle 19 (com.ibm.ws.transport.orb)
                       as Component of Class 
com.ibm.ws.iiop.internal.service.ORBServiceImpl 

Is also very like caused by a concurrency issue: The only explanation I have 
here is that the BundleChangeEvent for the lazy start and the actual start are 
fired quasi at the same time: LAZY_ACTIVATION is sent causing components to be 
loaded. While components are being loaded, the bundle is actually started and a 
STARTED event is fired causing the components to be loaded again because the 
LAZY_ACTIVATION induced load has not completed yet ...

The solution to this problem is to ensure (quasi-)concurrent delivery of bundle 
events does not cause harm by loading the bundle descriptors twice.

> Errors with services in Lazy bundles
> ------------------------------------
>
>                 Key: FELIX-2231
>                 URL: https://issues.apache.org/jira/browse/FELIX-2231
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions:  scr-1.4.0
>         Environment: Windows XP
>            Reporter: Alex Mulholland
>
> Using equinox f/w with felix DS.   Starting many bundles , some of which have 
> Lazy activation policy (including com.ibm.ws.transport.orb, which has 6 
> services defined).  Sometimes everything starts without error. 
> About 1 in 3 times I see these messages for the com.ibm.ws.transport.orb 
> bundle:
> Info: OSGI- [23 Mar 2010 14:27:43.531 EDT] BundleEvent RESOLVED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}
> Info: OSGI- [23 Mar 2010 14:27:43.531 EDT] BundleEvent INSTALLED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}
> Exception in thread "Alpine-CM-Thread-7" java.lang.NullPointerException
>       at 
> org.apache.felix.scr.impl.config.ConfiguredComponentHolder.configurationUpdated(ConfiguredComponentHolder.java:187)
>       at 
> org.apache.felix.scr.impl.config.ConfigurationComponentRegistry.configurationEvent(ConfigurationComponentRegistry.java:173)
>       at 
> com.ibm.ws.config.cm.internal.ConfigEventDispatcher$1.run(ConfigEventDispatcher.java:89)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:736)
> Info: OSGI- [23 Mar 2010 14:27:43.562 EDT] BundleEvent STOPPED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}
> On some other start attempts I see these messages:
> Info: OSGI- [19 Mar 2010 15:03:09.647 EDT] BundleEvent RESOLVED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}
> Info: OSGI- [19 Mar 2010 15:03:09.653 EDT] ServiceEvent REGISTERED 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> ServiceRef:[com.ibm.websphere.channelfw.osgi.ChannelFactoryProvider](id=56, 
> pid=null)
> Info: OSGI- [19 Mar 2010 15:03:09.655 EDT] ServiceEvent REGISTERED 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> ServiceRef:[com.ibm.ws.iiop.transport.internal.EventManager](id=57, pid=null)
> Error: OSGI- [19 Mar 2010 15:03:09.661 EDT] [com.ibm.ws.transport.orb] Cannot 
> register Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.transport.orb' has already been registered by Bundle 19 
> (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.ORBServiceImpl
> OSGI- [19 Mar 2010 15:03:09.661 EDT] [com.ibm.ws.transport.orb] Cannot 
> register Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.transport.orb' has already been registered by Bundle 19 
> (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.ORBServiceImpl
> Error: OSGI- [19 Mar 2010 15:03:09.676 EDT] [IIOPChannelProvider] Cannot 
> register Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'IIOPChannelProvider' has already been registered by Bundle 19 
> (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.IIOPChannelProvider
> OSGI- [19 Mar 2010 15:03:09.676 EDT] [IIOPChannelProvider] Cannot register 
> Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'IIOPChannelProvider' has already been registered by Bundle 19 
> (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.IIOPChannelProvider
> Error: OSGI- [19 Mar 2010 15:03:09.677 EDT] 
> [com.ibm.ws.iiop.transport.internal.EventManager] Cannot register Component 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.transport.internal.EventManager' has already been registered 
> by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.transport.internal.EventManager
> OSGI- [19 Mar 2010 15:03:09.677 EDT] 
> [com.ibm.ws.iiop.transport.internal.EventManager] Cannot register Component 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.transport.internal.EventManager' has already been registered 
> by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.transport.internal.EventManager
> Error: OSGI- [19 Mar 2010 15:03:09.678 EDT] 
> [com.ibm.ws.iiop.internal.service.CorbaContainer] Cannot register Component 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.internal.service.CorbaContainer' has already been registered 
> by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.CorbaContainer
> OSGI- [19 Mar 2010 15:03:09.678 EDT] 
> [com.ibm.ws.iiop.internal.service.CorbaContainer] Cannot register Component 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.internal.service.CorbaContainer' has already been registered 
> by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.CorbaContainer
> Error: OSGI- [19 Mar 2010 15:03:09.679 EDT] 
> [com.ibm.ws.iiop.internal.service.IIOPConnectionTracker] Cannot register 
> Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.internal.service.IIOPConnectionTracker' has already been 
> registered by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.IIOPConnectionTracker
> OSGI- [19 Mar 2010 15:03:09.679 EDT] 
> [com.ibm.ws.iiop.internal.service.IIOPConnectionTracker] Cannot register 
> Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.internal.service.IIOPConnectionTracker' has already been 
> registered by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.IIOPConnectionTracker
> Error: OSGI- [19 Mar 2010 15:03:09.681 EDT] 
> [com.ibm.ws.iiop.internal.service.PortableInterceptorManager] Cannot register 
> Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.internal.service.PortableInterceptorManager' has already 
> been registered by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.PortableInterceptorManager
> OSGI- [19 Mar 2010 15:03:09.681 EDT] 
> [com.ibm.ws.iiop.internal.service.PortableInterceptorManager] Cannot register 
> Component Bundle:com.ibm.ws.transport.orb(id=19) 
> org.osgi.service.component.ComponentException: The component name 
> 'com.ibm.ws.iiop.internal.service.PortableInterceptorManager' has already 
> been registered by Bundle 19 (com.ibm.ws.transport.orb) as Component of Class 
> com.ibm.ws.iiop.internal.service.PortableInterceptorManager
> Info: OSGI- [19 Mar 2010 15:03:09.681 EDT] BundleEvent STARTED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}
> Info: OSGI- [19 Mar 2010 15:03:09.685 EDT] BundleEvent INSTALLED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}
> Info: OSGI- [19 Mar 2010 15:03:09.690 EDT] ServiceEvent UNREGISTERING 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> ServiceRef:[com.ibm.websphere.channelfw.osgi.ChannelFactoryProvider](id=56, 
> pid=null)
> Info: OSGI- [19 Mar 2010 15:03:09.691 EDT] ServiceEvent UNREGISTERING 
> Bundle:com.ibm.ws.transport.orb(id=19) 
> ServiceRef:[com.ibm.ws.iiop.transport.internal.EventManager](id=57, pid=null)
> Info: OSGI- [19 Mar 2010 15:03:09.692 EDT] BundleEvent STOPPED 
> Bundle:com.ibm.ws.transport.orb(id=19) {3}

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