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