You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2012/08/01 09:52:33 UTC

[jira] [Created] (ARIES-896) Deadlock with blueprint services

Guillaume Nodet created ARIES-896:
-------------------------------------

             Summary: Deadlock with blueprint services
                 Key: ARIES-896
                 URL: https://issues.apache.org/jira/browse/ARIES-896
             Project: Aries
          Issue Type: Bug
          Components: Blueprint
            Reporter: Guillaume Nodet


{code}

"Blueprint Extender: 3" daemon prio=5 tid=7febbc25b800 nid=0x10a56f000 in Object.wait() [10a56c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7e0099538> (a org.apache.felix.framework.ServiceRegistry)
	at java.lang.Object.wait(Object.java:485)
	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:349)
	- locked <7e0099538> (a org.apache.felix.framework.ServiceRegistry)
	at org.apache.felix.framework.Felix.ungetService(Felix.java:3118)
	at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:342)
	at org.apache.aries.blueprint.container.ReferenceRecipe.bind(ReferenceRecipe.java:142)
	- locked <7f9bd4c10> (a java.lang.Object)
	at org.apache.aries.blueprint.container.ReferenceRecipe.retrack(ReferenceRecipe.java:112)
	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.updateListeners(AbstractServiceReferenceRecipe.java:319)
	at org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:91)
	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
	- locked <7f9bd58a8> (a java.lang.Object)
	at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
	- locked <7f9bd58a8> (a java.lang.Object)
	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
	- locked <7f9bd58a8> (a java.lang.Object)
	at org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:198)
	at org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:137)
	at org.apache.aries.blueprint.container.ServiceRecipe.createRecipe(ServiceRecipe.java:370)
	at org.apache.aries.blueprint.container.ServiceRecipe.createExplicitDependencies(ServiceRecipe.java:359)
	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:154)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.notifySatisfaction(BlueprintContainerImpl.java:604)
	- locked <7f9bd37e0> (a org.apache.aries.blueprint.container.ServiceRecipe)
	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.setSatisfied(AbstractServiceReferenceRecipe.java:305)
	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.serviceAdded(AbstractServiceReferenceRecipe.java:262)
	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.serviceChanged(AbstractServiceReferenceRecipe.java:245)
	at org.apache.felix.framework.util.EventDispatcher$5.run(EventDispatcher.java:852)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:848)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:721)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:649)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3857)
	at org.apache.felix.framework.Felix.access$000(Felix.java:89)
	at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:739)
	at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
	at org.apache.felix.framework.Felix.registerService(Felix.java:2946)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:415)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:413)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:413)
	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:184)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:654)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:233)
	- locked <7e02a0dc0> (a java.util.concurrent.atomic.AtomicBoolean)
	- locked <7e02a0db0> (a java.util.concurrent.atomic.AtomicBoolean)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
	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)

"Blueprint Extender: 1" daemon prio=5 tid=7febbb392000 nid=0x10a369000 waiting for monitor entry [10a366000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:247)
	- waiting to lock <7f9bd58a8> (a java.lang.Object)
	at org.apache.aries.blueprint.container.ServiceRecipe.getService(ServiceRecipe.java:327)
	at org.apache.aries.blueprint.container.ServiceRecipe$TriggerServiceFactory.getService(ServiceRecipe.java:430)
	at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:310)
	at org.apache.felix.framework.ServiceRegistrationImpl.access$100(ServiceRegistrationImpl.java:37)
	at org.apache.felix.framework.ServiceRegistrationImpl$ServiceFactoryPrivileged.run(ServiceRegistrationImpl.java:374)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:216)
	at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:297)
	at org.apache.felix.framework.Felix.getService(Felix.java:3106)
	at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:329)
	at org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:442)
	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
	at org.apache.felix.framework.util.EventDispatcher$5.run(EventDispatcher.java:852)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:848)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:721)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:649)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3857)
	at org.apache.felix.framework.Felix.access$000(Felix.java:89)
	at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:739)
	at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
	at org.apache.felix.framework.Felix.registerService(Felix.java:2946)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:415)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:413)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:413)
	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:184)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:654)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:233)
	- locked <7e02a13d8> (a java.util.concurrent.atomic.AtomicBoolean)
	- locked <7e02a13c8> (a java.util.concurrent.atomic.AtomicBoolean)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
	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}


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Re: [jira] [Resolved] (ARIES-896) Deadlock with blueprint services

Posted by Mark Nuttall <mn...@apache.org>.
Hi Guillaume,
We've run into a problem with this change in that unbind-method for
blueprint references no longer work in our environment.

This situation occurs when a bundle providing a service is stopped without
stopping the whole framework. A blueprint <reference> in another bundle has
an unbind-method which should be triggered. As per the OSGi R5 spec section
121.7.10, "The callbacks must be made synchronously with the corresponding
OSGi service event." Aries-896 violates this part of the specification and
results in unbind-methods no longer working correctly.

AbstractServiceReferenceRecipe.serviceChanged() is called because it is a
ServiceListener, and the service is being unregistered. Under Aries-896,
serviceRemoved() is now called under a Runnable(). This is the violation
that I mention above. The effect in our environment is that the bundle
providing the service in question is stopped before serviceRemoved() is
invoked, so that there is no BundleContext associated with the
ServiceReference provided to the blueprint unbind-method. This means that
an unusable ServiceReference is now provided to the unbind-method.

The net result is that application-level unbind-methods are broken in our
environment as a result of the changes to AbstractServiceReferenceRecipe
under Aries-896.

Do you have any suggestions as to how we can restore the broken
unbind-method support without reintroducing the deadlock problems addressed
in Aries-896?

Regards,
Mark


On 1 August 2012 20:30, Guillaume Nodet (JIRA) <ji...@apache.org> wrote:

>
>      [
> https://issues.apache.org/jira/browse/ARIES-896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel]
>
> Guillaume Nodet resolved ARIES-896.
> -----------------------------------
>
>        Resolution: Fixed
>     Fix Version/s: blueprint-core-1.0.1
>          Assignee: Guillaume Nodet
>
>  http://svn.apache.org/viewvc?rev=1368206&view=rev
>
> > Deadlock with blueprint services
> > --------------------------------
> >
> >                 Key: ARIES-896
> >                 URL: https://issues.apache.org/jira/browse/ARIES-896
> >             Project: Aries
> >          Issue Type: Bug
> >          Components: Blueprint
> >            Reporter: Guillaume Nodet
> >            Assignee: Guillaume Nodet
> >             Fix For: blueprint-core-1.0.1
> >
> >
> > {code}
> > "Blueprint Extender: 3" daemon prio=5 tid=7febbc25b800 nid=0x10a56f000
> in Object.wait() [10a56c000]
> >    java.lang.Thread.State: WAITING (on object monitor)
> >       at java.lang.Object.wait(Native Method)
> >       - waiting on <7e0099538> (a
> org.apache.felix.framework.ServiceRegistry)
> >       at java.lang.Object.wait(Object.java:485)
> >       at
> org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:349)
> >       - locked <7e0099538> (a org.apache.felix.framework.ServiceRegistry)
> >       at org.apache.felix.framework.Felix.ungetService(Felix.java:3118)
> >       at
> org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:342)
> >       at
> org.apache.aries.blueprint.container.ReferenceRecipe.bind(ReferenceRecipe.java:142)
> >       - locked <7f9bd4c10> (a java.lang.Object)
> >       at
> org.apache.aries.blueprint.container.ReferenceRecipe.retrack(ReferenceRecipe.java:112)
> >       at
> org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.updateListeners(AbstractServiceReferenceRecipe.java:319)
> >       at
> org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:91)
> >       at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
> >       - locked <7f9bd58a8> (a java.lang.Object)
> >       at
> org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> >       at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
> >       - locked <7f9bd58a8> (a java.lang.Object)
> >       at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
> >       - locked <7f9bd58a8> (a java.lang.Object)
> >       at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:198)
> >       at
> org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:137)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.createRecipe(ServiceRecipe.java:370)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.createExplicitDependencies(ServiceRecipe.java:359)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:154)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.notifySatisfaction(BlueprintContainerImpl.java:604)
> >       - locked <7f9bd37e0> (a
> org.apache.aries.blueprint.container.ServiceRecipe)
> >       at
> org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.setSatisfied(AbstractServiceReferenceRecipe.java:305)
> >       at
> org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.serviceAdded(AbstractServiceReferenceRecipe.java:262)
> >       at
> org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.serviceChanged(AbstractServiceReferenceRecipe.java:245)
> >       at
> org.apache.felix.framework.util.EventDispatcher$5.run(EventDispatcher.java:852)
> >       at java.security.AccessController.doPrivileged(Native Method)
> >       at
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:848)
> >       at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:721)
> >       at
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:649)
> >       at
> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3857)
> >       at org.apache.felix.framework.Felix.access$000(Felix.java:89)
> >       at
> org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:739)
> >       at
> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
> >       at
> org.apache.felix.framework.Felix.registerService(Felix.java:2946)
> >       at
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:415)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:413)
> >       at java.security.AccessController.doPrivileged(Native Method)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:413)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:184)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:654)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:233)
> >       - locked <7e02a0dc0> (a java.util.concurrent.atomic.AtomicBoolean)
> >       - locked <7e02a0db0> (a java.util.concurrent.atomic.AtomicBoolean)
> >       at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >       at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >       at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >       at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> >       at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> >       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)
> > "Blueprint Extender: 1" daemon prio=5 tid=7febbb392000 nid=0x10a369000
> waiting for monitor entry [10a366000]
> >    java.lang.Thread.State: BLOCKED (on object monitor)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:247)
> >       - waiting to lock <7f9bd58a8> (a java.lang.Object)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.getService(ServiceRecipe.java:327)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe$TriggerServiceFactory.getService(ServiceRecipe.java:430)
> >       at
> org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:310)
> >       at
> org.apache.felix.framework.ServiceRegistrationImpl.access$100(ServiceRegistrationImpl.java:37)
> >       at
> org.apache.felix.framework.ServiceRegistrationImpl$ServiceFactoryPrivileged.run(ServiceRegistrationImpl.java:374)
> >       at java.security.AccessController.doPrivileged(Native Method)
> >       at
> org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:216)
> >       at
> org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:297)
> >       at org.apache.felix.framework.Felix.getService(Felix.java:3106)
> >       at
> org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:329)
> >       at
> org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:442)
> >       at
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
> >       at
> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
> >       at
> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
> >       at
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> >       at
> org.apache.felix.framework.util.EventDispatcher$5.run(EventDispatcher.java:852)
> >       at java.security.AccessController.doPrivileged(Native Method)
> >       at
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:848)
> >       at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:721)
> >       at
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:649)
> >       at
> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3857)
> >       at org.apache.felix.framework.Felix.access$000(Felix.java:89)
> >       at
> org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:739)
> >       at
> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
> >       at
> org.apache.felix.framework.Felix.registerService(Felix.java:2946)
> >       at
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:415)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:413)
> >       at java.security.AccessController.doPrivileged(Native Method)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:413)
> >       at
> org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:184)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:654)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)
> >       at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:233)
> >       - locked <7e02a13d8> (a java.util.concurrent.atomic.AtomicBoolean)
> >       - locked <7e02a13c8> (a java.util.concurrent.atomic.AtomicBoolean)
> >       at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >       at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >       at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >       at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> >       at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> >       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}
>
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA
> administrators:
> https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>
>
>

[jira] [Resolved] (ARIES-896) Deadlock with blueprint services

Posted by "Guillaume Nodet (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ARIES-896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet resolved ARIES-896.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: blueprint-core-1.0.1
         Assignee: Guillaume Nodet

 http://svn.apache.org/viewvc?rev=1368206&view=rev
                
> Deadlock with blueprint services
> --------------------------------
>
>                 Key: ARIES-896
>                 URL: https://issues.apache.org/jira/browse/ARIES-896
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>            Reporter: Guillaume Nodet
>            Assignee: Guillaume Nodet
>             Fix For: blueprint-core-1.0.1
>
>
> {code}
> "Blueprint Extender: 3" daemon prio=5 tid=7febbc25b800 nid=0x10a56f000 in Object.wait() [10a56c000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <7e0099538> (a org.apache.felix.framework.ServiceRegistry)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:349)
> 	- locked <7e0099538> (a org.apache.felix.framework.ServiceRegistry)
> 	at org.apache.felix.framework.Felix.ungetService(Felix.java:3118)
> 	at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:342)
> 	at org.apache.aries.blueprint.container.ReferenceRecipe.bind(ReferenceRecipe.java:142)
> 	- locked <7f9bd4c10> (a java.lang.Object)
> 	at org.apache.aries.blueprint.container.ReferenceRecipe.retrack(ReferenceRecipe.java:112)
> 	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.updateListeners(AbstractServiceReferenceRecipe.java:319)
> 	at org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:91)
> 	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
> 	- locked <7f9bd58a8> (a java.lang.Object)
> 	at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> 	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
> 	- locked <7f9bd58a8> (a java.lang.Object)
> 	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)
> 	- locked <7f9bd58a8> (a java.lang.Object)
> 	at org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:198)
> 	at org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:137)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.createRecipe(ServiceRecipe.java:370)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.createExplicitDependencies(ServiceRecipe.java:359)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:154)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.notifySatisfaction(BlueprintContainerImpl.java:604)
> 	- locked <7f9bd37e0> (a org.apache.aries.blueprint.container.ServiceRecipe)
> 	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.setSatisfied(AbstractServiceReferenceRecipe.java:305)
> 	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.serviceAdded(AbstractServiceReferenceRecipe.java:262)
> 	at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.serviceChanged(AbstractServiceReferenceRecipe.java:245)
> 	at org.apache.felix.framework.util.EventDispatcher$5.run(EventDispatcher.java:852)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:848)
> 	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:721)
> 	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:649)
> 	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3857)
> 	at org.apache.felix.framework.Felix.access$000(Felix.java:89)
> 	at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:739)
> 	at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
> 	at org.apache.felix.framework.Felix.registerService(Felix.java:2946)
> 	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:415)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:413)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:413)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:184)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:654)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:233)
> 	- locked <7e02a0dc0> (a java.util.concurrent.atomic.AtomicBoolean)
> 	- locked <7e02a0db0> (a java.util.concurrent.atomic.AtomicBoolean)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> 	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)
> "Blueprint Extender: 1" daemon prio=5 tid=7febbb392000 nid=0x10a369000 waiting for monitor entry [10a366000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:247)
> 	- waiting to lock <7f9bd58a8> (a java.lang.Object)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.getService(ServiceRecipe.java:327)
> 	at org.apache.aries.blueprint.container.ServiceRecipe$TriggerServiceFactory.getService(ServiceRecipe.java:430)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:310)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.access$100(ServiceRegistrationImpl.java:37)
> 	at org.apache.felix.framework.ServiceRegistrationImpl$ServiceFactoryPrivileged.run(ServiceRegistrationImpl.java:374)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:216)
> 	at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:297)
> 	at org.apache.felix.framework.Felix.getService(Felix.java:3106)
> 	at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:329)
> 	at org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:442)
> 	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
> 	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
> 	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
> 	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> 	at org.apache.felix.framework.util.EventDispatcher$5.run(EventDispatcher.java:852)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:848)
> 	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:721)
> 	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:649)
> 	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3857)
> 	at org.apache.felix.framework.Felix.access$000(Felix.java:89)
> 	at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:739)
> 	at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
> 	at org.apache.felix.framework.Felix.registerService(Felix.java:2946)
> 	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:415)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl$3.run(BlueprintContainerImpl.java:413)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:413)
> 	at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:184)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:654)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)
> 	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:233)
> 	- locked <7e02a13d8> (a java.util.concurrent.atomic.AtomicBoolean)
> 	- locked <7e02a13c8> (a java.util.concurrent.atomic.AtomicBoolean)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> 	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}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira