Hi,

It sounds like a cycle during object creation. iPOJO object are created when needed by default (if your component provides a service). To handle that iPOJO uses OSGi service factories.

The problem sounds to be the following:
- a service is going to be used
- iPOJO creates the pojo object (because, we need it)
- this object can also depending on a service, which may use the one of the previous ones.... Cycle

To break the cycle, you can set one component to immediate. In that case, the object will be created eagerly. the big question is : Which ones.

If you gives me more detail on your system, I can figure out how to break the cycle.

Regards,

Clement

On 22.09.2009, at 23:21, Joel Schuster wrote:



I hate sending stack traces but I'm running into a real nasty issue. I've tried both Felix 1.8.x and 2.0. I get the same issue. I've tried various forms of the @Requires annotation.

This problem is sometimes reproducible on two systems but not on the third so I'm beginning to suspect a race condition of some sort as it only manifests some of the time and is sometimes dependant upon the order of the bundle loading.

I have one bundle that @Requires a collection of instances from another bundle that implements two different interfaces, also each in their own bundles. I've created a test set of bundles to see if the problem comes from the inheritance model, but I can't reproduce in a smaller example. Yet another reason it feels like a race condition.

Thoughts?




-> ERROR: EventDispatcher: Error during dispatch. (java.lang.IllegalStateException: ServiceFactory.getService() resulted in a cycle.) java.lang.IllegalStateException: ServiceFactory.getService() resulted in a cycle. at org .apache .felix.framework.ServiceRegistry.getService(ServiceRegistry.java:261)
        at org.apache.felix.framework.Felix.getService(Felix.java:2881)
at org .apache .felix.framework.BundleContextImpl.getService(BundleContextImpl.java: 357) at org.apache.felix.ipojo.IPojoContext.getService(IPojoContext.java: 260)
        at org.apache.felix.ipojo.util.Tracker.getService(Tracker.java:434)
at org .apache .felix.ipojo.util.DependencyModel.ungetService(DependencyModel.java: 917) at org .apache .felix .ipojo.util.DependencyModel.manageDeparture(DependencyModel.java:435) at org .apache .felix .ipojo.util.DependencyModel.removedService(DependencyModel.java:424) at org.apache.felix.ipojo.util.Tracker$Tracked.untrack(Tracker.java: 736) at org.apache.felix.ipojo.util.Tracker $Tracked.serviceChanged(Tracker.java:636) at org .apache .felix .framework .util .EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java: 878) at org .apache .felix .framework .util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732) at org .apache .felix .framework .util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3603)
        at org.apache.felix.framework.Felix.access$000(Felix.java:40)
        at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:624)
at org .apache .felix .framework.ServiceRegistry.unregisterService(ServiceRegistry.java:117) at org .apache .felix .framework .ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:128) at org .apache .felix .ipojo .handlers .providedservice .ProvidedService.unregisterService(ProvidedService.java:298) at org .apache .felix .ipojo .handlers .providedservice .ProvidedServiceHandler.__stateChanged(ProvidedServiceHandler.java: 435) at org .apache .felix .ipojo .handlers .providedservice .ProvidedServiceHandler.stateChanged(ProvidedServiceHandler.java) at org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java: 451) at org.apache.felix.ipojo.InstanceManager.stop(InstanceManager.java: 340)
        at org.apache.felix.ipojo.util.Property.invoke(Property.java:502)
at org .apache .felix .ipojo .handlers .configuration .ConfigurationHandler.__onCreation(ConfigurationHandler.java:432) at org .apache .felix .ipojo .handlers .configuration .ConfigurationHandler.onCreation(ConfigurationHandler.java) at org .apache .felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:787) at org.apache.felix.ipojo.handlers.providedservice.ProvidedService $SingletonStrategy.getService(ProvidedService.java:438) at org .apache .felix .ipojo .handlers .providedservice.ProvidedService.getService(ProvidedService.java:263) at org .apache .felix .framework .ServiceRegistrationImpl .getFactoryUnchecked(ServiceRegistrationImpl.java:293) at org .apache .felix .framework .ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:207) at org .apache .felix.framework.ServiceRegistry.getService(ServiceRegistry.java:307)
        at org.apache.felix.framework.Felix.getService(Felix.java:2881)
at org .apache .felix.framework.BundleContextImpl.getService(BundleContextImpl.java: 357) at org.apache.felix.ipojo.IPojoContext.getService(IPojoContext.java: 260)
        at org.apache.felix.ipojo.util.Tracker.getService(Tracker.java:426)
at org .apache .felix.ipojo.util.DependencyModel.getService(DependencyModel.java:901) at org .apache .felix .ipojo .handlers.dependency.Dependency.createServiceObject(Dependency.java: 481) at org .apache .felix.ipojo.handlers.dependency.Dependency.onGet(Dependency.java:456) at org.apache.felix.ipojo.InstanceManager.onGet(InstanceManager.java:944) at com.navsys.mcmpge.kearfott.knclient.KNClient.__getcomms(KNClient.java) at com.navsys.mcmpge.kearfott.knclient.KNClient.<init>(KNClient.java:49) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun .reflect .NativeConstructorAccessorImpl .newInstance(NativeConstructorAccessorImpl.java:39) at sun .reflect .DelegatingConstructorAccessorImpl .newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org .apache .felix.ipojo.InstanceManager.createObject(InstanceManager.java:600) at org .apache .felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:776) at org .apache .felix .ipojo .handlers .lifecycle .callback .LifecycleCallbackHandler .__stateChanged(LifecycleCallbackHandler.java:156) at org .apache .felix .ipojo .handlers .lifecycle .callback .LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java) at org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java: 440) at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:321) at org .apache .felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java: 155) at org .apache .felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java: 298) at org .apache .felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java: 235)
        at org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:603)
at org.apache.felix.cm.impl.ConfigurationManager $UpdateConfiguration.run(ConfigurationManager.java:1460)
        at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88)

---------------------------------------------------------------------
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]

Reply via email to