Hi, I just fixed the bug in the trunk (was no more able to reproduce it). Please check against the trunk version.
Regards, Clement On 17.03.11 09:17, "Clement Escoffier" <[email protected]> wrote: >Hi, > >On 17.03.11 08:19, "Olivier Bigard" <[email protected]> wrote: > >> >>Hi Clément, >> >>Any news about it? >>Did you succeed to reproduce it? > >I've reproduced it, so it's definitely a synchronization issue. I didn't >find the time to fix it so far, I hope to find to time this weekend. > > >Regards, > >Clement > > > >> >>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( >>>>P >>>>ro >>>>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. >>>>o >>>>nS >>>>et(ProvidedServiceHandler.java) >>>> at >>>>org.apache.felix.ipojo.InstanceManager.onSet(InstanceManager.java:1102) >>>> at >>>>com.axway.drw.core.defimpl.policy.DefaultPolicyDecisionPoint.__setranki >>>>n >>>>g( >>>>DefaultPolicyDecisionPoint.java) >>>> at >>>>com.axway.drw.core.defimpl.policy.DefaultPolicyDecisionPoint.<init>(Def >>>>a >>>>ul >>>>tPolicyDecisionPoint.java:32) >>>> at >>>>sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >>>> at >>>>sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructor >>>>A >>>>cc >>>>essorImpl.java:39) >>>> >>>>sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCon >>>>s >>>>tr >>>>uctorAccessorImpl.java:27) >>>> >>>>java.lang.reflect.Constructor.newInstance(Constructor.java:513) >>>> >>>>org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.jav >>>>a >>>>:6 >>>>01) >>>> >>>>org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.ja >>>>v >>>>a: >>>>777) >>>> >>>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService$Singlet >>>>o >>>>nS >>>>trategy.getService(ProvidedService.java:691) >>>> >>>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService.getServ >>>>i >>>>ce >>>>(ProvidedService.java:306) >>>> >>>>org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked( >>>>S >>>>er >>>>viceRegistrationImpl.java:307) >>>> >>>>org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRe >>>>g >>>>is >>>>trationImpl.java:221) >>>> >>>>org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.j >>>>a >>>>va >>>>:295) >>>> >>>>org.apache.felix.framework.Felix.getService(Felix.java:3007) >>>> >>>>org.apache.felix.framework.BundleContextImpl.getService(BundleContextIm >>>>p >>>>l. >>>>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. >>>>j >>>>av >>>>a:911) >>>> >>>>org.apache.felix.ipojo.handlers.dependency.Dependency.createServiceObje >>>>c >>>>t( >>>>Dependency.java:631) >>>> >>>>org.apache.felix.ipojo.handlers.dependency.Dependency.onGet(Dependency. >>>>j >>>>av >>>>a:602) >>>> >>>>org.apache.felix.ipojo.InstanceManager.onGet(InstanceManager.java:945) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.policy.RestPolicyEnforcemen >>>>t >>>>Po >>>>int.__getpdp(RestPolicyEnforcementPoint.java) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.policy.RestPolicyEnforcemen >>>>t >>>>Po >>>>int.__preFilter(RestPolicyEnforcementPoint.java:170) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.policy.RestPolicyEnforcemen >>>>t >>>>Po >>>>int.preFilter(RestPolicyEnforcementPoint.java) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.InterceptorFilterManager.pr >>>>e >>>>Fi >>>>lter(InterceptorFilterManager.java:86) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.InterceptorFilterManager.ac >>>>c >>>>es >>>>s$200(InterceptorFilterManager.java:32) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.InterceptorFilterManager$Re >>>>s >>>>ou >>>>rceFilterAdapter.filter(InterceptorFilterManager.java:132) >>>> >>>>com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRu >>>>l >>>>e. >>>>java:270) >>>> >>>>com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHand >>>>P >>>>at >>>>hRule.java:136) >>>> >>>>com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(Resource >>>>O >>>>bj >>>>ectRule.java:84) >>>> >>>>com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHand >>>>P >>>>at >>>>hRule.java:136) >>>> >>>>com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(Roo >>>>t >>>>Re >>>>sourceClassesRule.java:74) >>>> >>>>com.sun.jersey.server.impl.application.WebApplicationImpl._handleReques >>>>t >>>>(W >>>>ebApplicationImpl.java:1347) >>>> >>>>com.sun.jersey.server.impl.application.WebApplicationImpl._handleReques >>>>t >>>>(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( >>>>G >>>>ri >>>>zzlyContainer.java:180) >>>> >>>>com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer.service(G >>>>r >>>>iz >>>>zlyContainer.java:145) >>>> >>>>com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:1 >>>>6 >>>>8) >>>> >>>>com.axway.darwin.server.core.rest.impl.rest.JerseyAdapter.service(Jerse >>>>y >>>>Ad >>>>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.j >>>>a >>>>va >>>>:63) >>>> >>>>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecut >>>>o >>>>r. >>>>java:886) >>>> >>>>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.j >>>>a >>>>va >>>>: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.invokeServiceListenerCa >>>>l >>>>lb >>>>ack(EventDispatcher.java:864) >>>> at >>>>org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(Ev >>>>e >>>>nt >>>>Dispatcher.java:732) >>>> at >>>>org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventD >>>>i >>>>sp >>>>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(Se >>>>r >>>>vi >>>>ceRegistry.java:478) >>>> >>>>org.apache.felix.framework.ServiceRegistrationImpl.setProperties(Servic >>>>e >>>>Re >>>>gistrationImpl.java:116) >>>> >>>>org.apache.felix.ipojo.handlers.providedservice.ProvidedService.registe >>>>r >>>>Se >>>>rvice(ProvidedService.java:348) >>>> >>>>org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler. >>>>_ >>>>_s >>>>tateChanged(ProvidedServiceHandler.java:494) >>>> >>>>org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler. >>>>s >>>>ta >>>>teChanged(ProvidedServiceHandler.java) >>>> >>>>org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:44 >>>>1 >>>>) >>>> >>>>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(IPojoFactor >>>>y >>>>.j >>>>ava:301) >>>> >>>>org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactor >>>>y >>>>.j >>>>ava:238) >>>> >>>>org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceC >>>>r >>>>ea >>>>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] >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

