Ok. It has not much to do with locks - just having potentially a very deep stack that could contain loops. Fortunately, I have my own abstraction on top of the bundle context, so it would be easy for me to push the registration in a separate thread - you experts don't see any pb with this right ?
On 2/13/09, Richard S. Hall <[email protected]> wrote: > ServiceEvents are defined in the spec as being delivered on the calling > thread (i.e., synchronously). I agree, this sucks and shouldn't be that > way, but the spec says so. > > -> richard > > Jacques-Olivier Goussard wrote: >> Hi >> I just found a deadlock in our code that was the result of the lack of >> asynchronicity. When a service is registered in felix, the trackers are >> notified in the same thread. Is >> it the intended behavior ? >> Looks to me that could lead to a very deep stack of invocation, no ? Of >> course I can fix this by doing my service regsitration in a separate >> thread, >> but I wanted >> to check first with you for input. >> Thanks >> /jog >> Here I paste an exerpt of the stack trace I have: >> >> at >> com.oz.platform.messaging.routing.RoutingManager.handleServiceEvent(RoutingManager.java:592) >> >> at >> com.oz.platform.osgi.ComponentPlatform$ServiceNotifier.addingService(ComponentPlatform.java:244) >> >> at >> org.osgi.util.tracker.ServiceTracker$Tracked.trackAdding(ServiceTracker.java:1030) >> >> at >> org.osgi.util.tracker.ServiceTracker$Tracked.track(ServiceTracker.java:1008) >> >> at >> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:941) >> >> at >> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:765) >> >> at >> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:623) >> >> at >> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:554) >> >> at >> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3566) >> >> at org.apache.felix.framework.Felix.access$200(Felix.java:37) >> >> at >> org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:833) >> >> at >> org.apache.felix.framework.ServiceRegistry.fireServiceChanged(ServiceRegistry.java:559) >> >> at >> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:75) >> >> at >> org.apache.felix.framework.Felix.registerService(Felix.java:2713) >> >> at >> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252) >> >> at >> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:230) >> >> at >> com.oz.platform.osgi.ComponentPlatform.registerService(ComponentPlatform.java:130) >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Sent from my mobile device --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

