Guillaume Nodet created ARIES-974: ------------------------------------- Summary: Deadlock with cycle between service / bean / listener Key: ARIES-974 URL: https://issues.apache.org/jira/browse/ARIES-974 Project: Aries Issue Type: Bug Reporter: Guillaume Nodet
Thread dump: {code} Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.12-b01-434 mixed mode): "pool-org.apache.servicemix.nmr.osgi-1.6.0.fuse-71-040-thread-2" prio=5 tid=7ff10dd5d000 nid=0x11e000000 waiting on condition [11dffd000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <7fba729a8> (a java.util.concurrent.FutureTask$Sync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:969) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281) at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:218) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:93) at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.di.CollectionRecipe.internalCreate(CollectionRecipe.java:90) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createListeners(AbstractServiceReferenceRecipe.java:240) at org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:108) at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88) at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787) at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88) at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787) at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88) at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:280) at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:247) at org.apache.aries.blueprint.container.ServiceRecipe.getService(ServiceRecipe.java:349) at org.apache.aries.blueprint.container.ServiceRecipe$TriggerServiceFactory.getService(ServiceRecipe.java:502) at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:325) at org.apache.felix.framework.ServiceRegistrationImpl.access$100(ServiceRegistrationImpl.java:46) at org.apache.felix.framework.ServiceRegistrationImpl$1.call(ServiceRegistrationImpl.java:234) at org.apache.felix.framework.Felix$6.call(Felix.java:2098) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:680) "pool-org.apache.servicemix.nmr.osgi-1.6.0.fuse-71-040-thread-1" prio=5 tid=7ff10bba2000 nid=0x11defd000 waiting on condition [11defb000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <7fba5acb8> (a java.util.concurrent.FutureTask$Sync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:969) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281) at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:218) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:93) at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787) at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88) at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106) at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907) at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820) at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787) at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88) at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245) at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183) at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:649) at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:356) at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:255) - locked <7fb6513b0> (a java.util.concurrent.atomic.AtomicBoolean) at org.apache.aries.blueprint.container.BlueprintExtender.checkBundle(BlueprintExtender.java:325) at org.apache.aries.blueprint.container.BlueprintExtender.bundleChanged(BlueprintExtender.java:243) at org.apache.aries.blueprint.container.BlueprintExtender$BlueprintBundleTrackerCustomizer.modifiedBundle(BlueprintExtender.java:471) at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:198) at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:128) at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:468) at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:161) at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:117) at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1103) at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696) at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484) at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4479) at org.apache.felix.framework.Felix$4.run(Felix.java:2019) at org.apache.felix.framework.Felix$5.run(Felix.java:2061) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:680) {code} Object creation stack: {code} executorConfigurator - executorFactory - managementStrategy - servicemix - servicemix - endpointStrategy - executorFactory {code} Blueprint code: https://github.com/apache/servicemix4-nmr/blob/dd66b65342d757d66af36988ecdc8f785dc61826/nmr/osgi/src/main/resources/OSGI-INF/blueprint/servicemix-nmr.xml Stripped xml {code} <bean id="servicemix" class="org.apache.servicemix.nmr.core.ServiceMix" init-method="init" destroy-method="shutdown"> <property name="endpointRegistry" ref="endpointRegistry"/> <property name="listenerRegistry" ref="listenerRegistry"/> <property name="flowRegistry" ref="flowRegistry"/> <property name="wireRegistry" ref="wireRegistry"/> <property name="executorFactory" ref="executorFactory"/> <property name="id" value="${nmrId}"/> </bean> <reference id="managementStrategy" interface="org.fusesource.commons.management.ManagementStrategy"> <reference-listener ref="servicemix" bind-method="bindManagementStrategy" unbind-method="unbindManagementStrategy" /> </reference> <bean id="executorFactory" class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"> <property name="defaultConfig"> <bean class="org.apache.servicemix.executors.impl.ExecutorConfig"> <property name="allowCoreThreadTimeOut" value="${allowCoreThreadTimeOut}"/> <property name="corePoolSize" value="${corePoolSize}"/> <property name="maximumPoolSize" value="${maximumPoolSize}"/> <property name="queueSize" value="${queueSize}"/> <property name="bypassIfSynchronous" value="${bypassIfSynchronous}"/> </bean> </property> <property name="managementStrategy" ref="managementStrategy"/> </bean> <service ref="executorFactory" interface="org.apache.servicemix.executors.ExecutorFactory"/> {code} -- 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