Hi Clément,

Any news about it?
Did you succeed to reproduce it?

Thanks,
Olivier


clement escoffier wrote:
> 
> Hi,
> 
> 
> On 01.03.11 11:15, "Bigard Olivier" <[email protected]> wrote:
> 
>>Hi all,
>>
>>We faced a deadlock issue with iPojo 1.6.4 (and also reproduced with
>>iPojo 1.8.0).
>>Here are the details of the context:
>>
>>
>>1)      We have a first iPojo Component that we will call "PDP".
>>This Component is declared with the 3 iPojo annotations "Component",
>>"Instantiate" and "Provides".
>>
>>2)      We have a second iPojo Component that we will call "PEP".
>>This Component is declared with the 3 iPojo annotations "Component",
>>"Instantiate" and "Provides".
>>This Component requires the "PDP" Component with a "@Requires(policy =
>>"dynamic-priority")" annotation.
>>In a public method of the "PEP" Component we try to access to a method of
>>the "PDP" reference.
> 
> 
> Thanks, I will try to reproduce it and check
> 
>>
>>During some tests, we are facing the following deadlock problem:
>>
>>2011-02-28 16:38:12,379 - [Thread Monitor] WARN
>>(WatcherActivator.deadlockDetected:70) - Thread Deadlock detected...
>>2011-02-28 16:38:12,379 - [Thread Monitor] WARN
>>(WatcherActivator.deadlockDetected:71) - Deadlocked Thread:
>>"AsyncRequest-1" Id=87 BLOCKED on
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService@1664cb5
>>owned by "Thread-7" Id=29
>>                at
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService.update(Pro
>>videdService.java:446)
>>                -  blocked on
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService@1664cb5
>>                at
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.__o
>>nSet(ProvidedServiceHandler.java:432)
>>                at
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.onS
>>et(ProvidedServiceHandler.java)
>>                at
>>org.apache.felix.ipojo.InstanceManager.onSet(InstanceManager.java:1102)
>>                at
>>com.axway.drw.core.defimpl.policy.DefaultPolicyDecisionPoint.__setranking(
>>DefaultPolicyDecisionPoint.java)
>>                at
>>com.axway.drw.core.defimpl.policy.DefaultPolicyDecisionPoint.<init>(Defaul
>>tPolicyDecisionPoint.java:32)
>>                at
>>sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>                at
>>sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcc
>>essorImpl.java:39)
>>                
>>sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstr
>>uctorAccessorImpl.java:27)
>>                
>>java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>                
>>org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:6
>>01)
>>                
>>org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:
>>777)
>>                
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService$SingletonS
>>trategy.getService(ProvidedService.java:691)
>>                
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService.getService
>>(ProvidedService.java:306)
>>                
>>org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(Ser
>>viceRegistrationImpl.java:307)
>>                
>>org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegis
>>trationImpl.java:221)
>>                
>>org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java
>>:295)
>>                
>>org.apache.felix.framework.Felix.getService(Felix.java:3007)
>>                
>>org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.
>>java:329)
>>                
>>org.apache.felix.ipojo.IPojoContext.getService(IPojoContext.java:260)
>>                
>>org.apache.felix.ipojo.util.Tracker.getService(Tracker.java:441)
>>                
>>org.apache.felix.ipojo.util.DependencyModel.getService(DependencyModel.jav
>>a:911)
>>                
>>org.apache.felix.ipojo.handlers.dependency.Dependency.createServiceObject(
>>Dependency.java:631)
>>                
>>org.apache.felix.ipojo.handlers.dependency.Dependency.onGet(Dependency.jav
>>a:602)
>>                
>>org.apache.felix.ipojo.InstanceManager.onGet(InstanceManager.java:945)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.policy.RestPolicyEnforcementPo
>>int.__getpdp(RestPolicyEnforcementPoint.java)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.policy.RestPolicyEnforcementPo
>>int.__preFilter(RestPolicyEnforcementPoint.java:170)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.policy.RestPolicyEnforcementPo
>>int.preFilter(RestPolicyEnforcementPoint.java)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.InterceptorFilterManager.preFi
>>lter(InterceptorFilterManager.java:86)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.InterceptorFilterManager.acces
>>s$200(InterceptorFilterManager.java:32)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.InterceptorFilterManager$Resou
>>rceFilterAdapter.filter(InterceptorFilterManager.java:132)
>>                
>>com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.
>>java:270)
>>                
>>com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPat
>>hRule.java:136)
>>                
>>com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObj
>>ectRule.java:84)
>>                
>>com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPat
>>hRule.java:136)
>>                
>>com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootRe
>>sourceClassesRule.java:74)
>>                
>>com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(W
>>ebApplicationImpl.java:1347)
>>                
>>com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(W
>>ebApplicationImpl.java:1279)
>>                
>>com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(We
>>bApplicationImpl.java:1229)
>>                
>>com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(We
>>bApplicationImpl.java:1219)
>>                
>>com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer._service(Gri
>>zzlyContainer.java:180)
>>                
>>com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer.service(Griz
>>zlyContainer.java:145)
>>                
>>com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
>>                
>>com.axway.darwin.server.core.rest.impl.rest.JerseyAdapter.service(JerseyAd
>>apter.java:124)
>>                
>>com.axway.darwin.server.core.http.impl.auth.GrizzlyAuthenticationFilter.se
>>rveProtectedAdapter(GrizzlyAuthenticationFilter.java:374)
>>                
>>com.axway.darwin.server.core.http.impl.auth.GrizzlyAuthenticationFilter.se
>>rvice(GrizzlyAuthenticationFilter.java:96)
>>                
>>com.axway.darwin.server.core.http.async.AsyncRequest.run(AsyncRequest.java
>>:63)
>>                
>>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.
>>java:886)
>>                
>>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java
>>:908)
>>                java.lang.Thread.run(Thread.java:662)
>>
>>2011-02-28 16:38:12,379 - [Thread Monitor] WARN
>>(WatcherActivator.deadlockDetected:70) - Thread Deadlock detected...
>>2011-02-28 16:38:12,379 - [Thread Monitor] WARN
>>(WatcherActivator.deadlockDetected:71) - Deadlocked Thread:
>>"Thread-7" Id=29 BLOCKED on
>>org.apache.felix.ipojo.util.Tracker$Tracked@a28708 owned by
>>"AsyncRequest-1" Id=87
>>                at
>>org.apache.felix.ipojo.util.Tracker$Tracked.track(Tracker.java:666)
>>                -  blocked on
>>org.apache.felix.ipojo.util.Tracker$Tracked@a28708
>>                at
>>org.apache.felix.ipojo.util.Tracker$Tracked.serviceChanged(Tracker.java:64
>>7)
>>                at
>>org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallb
>>ack(EventDispatcher.java:864)
>>                at
>>org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(Event
>>Dispatcher.java:732)
>>                at
>>org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDisp
>>atcher.java:662)
>>                at
>>org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3726)
>>                at
>>org.apache.felix.framework.Felix.access$000(Felix.java:80)
>>                at
>>org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:717)
>>                
>>org.apache.felix.framework.ServiceRegistry.servicePropertiesModified(Servi
>>ceRegistry.java:478)
>>                
>>org.apache.felix.framework.ServiceRegistrationImpl.setProperties(ServiceRe
>>gistrationImpl.java:116)
>>                
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService.registerSe
>>rvice(ProvidedService.java:348)
>>                
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.__s
>>tateChanged(ProvidedServiceHandler.java:494)
>>                
>>org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.sta
>>teChanged(ProvidedServiceHandler.java)
>>                
>>org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:441)
>>                
>>org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:322)
>>                
>>org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.ja
>>va:155)
>>                
>>org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.j
>>ava:301)
>>                
>>org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.j
>>ava:238)
>>                
>>org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCrea
>>tor.java:343)
>>                
>>org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89
>>)
>>                org.apache.felix.ipojo.Extender.parse(Extender.java:269)
>>                
>>org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:208)
>>                
>>org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
>>                
>>org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:682)
>>                java.lang.Thread.run(Thread.java:662)
>>
>>It seems that the 2 threads are trying to modify the same
>>"ProvidedService" instance: the first one to update the value of the
>>"ServiceRanking" property and the second one to change its state.
>>
>>One very important information: we tried to change the way to instantiate
>>the second Component ("PDP") by using the XML instead of the annotation
>>and the deadlock disappeared!
> 
> This just change the order of the declaration that make the difference.
> Indeed, both XML and annotations are mixed in the bundle manifest.
> 
> Regards,
> 
> Clement
> 
>>
>>Thank you for your help
>>Olivier
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/iPojo-deadlock-problem-tp31039503p31170374.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to