Sorry, that email wasn't meant for the list.... -----Original Message----- From: John Stump [mailto:[email protected]] Sent: Wednesday, September 23, 2009 11:39 AM To: '[email protected]' Subject: RE: @Requires : ServiceFactory.getService() resulted in a cycle.
More weird stuff. When I set the strategy to "instance": I don't get the cycle exception, but I get a no port found exception, which is correct because I don't have the sensor connected. However, if I try to issue another command, the rxtx instance is gone and my Communications field is null. When the strategy is not "instance": I don't see the instance in arch output, *but* I can continue to use the rxtx bundle over and over, producing the same no port exception. -----Original Message----- From: Joel Schuster [mailto:[email protected]] Sent: Wednesday, September 23, 2009 11:33 AM To: '[email protected]' Subject: RE: @Requires : ServiceFactory.getService() resulted in a cycle. As a side note... might this be a problem with the @Provides in the RxTx service? If the default strategy is SINGLETON, how does multiple cfg files create multiple instances? Or is this just referring to the factory? - Joel > -----Original Message----- > From: Joel Schuster [mailto:[email protected]] > Sent: Wednesday, September 23, 2009 11:03 AM > To: '[email protected]' > Subject: RE: @Requires : ServiceFactory.getService() resulted in a cycle. > > Clement, > > I have an rxtx bundle. I use cfg files to create one or more ipojo > instances of my rxtx service. These cfg files have stuff like baud, > parity, com port name, etc. > > I have another bundle that uses just one of those, I get the list of all > of them and then pick one based on a property within the rxtx service also > configured by the cfg files. > > So: > > KNClient (instance from cfg file) > | > V > <uses one of x number based on property set in rxtx cfg file> > | > V > SerialRxTx (instances from cfg files) > > I tried putting immediate=true on the RxTx service, however the cfg files > no longer were setting the properties and the arch command no longer > showed any instances being created even though the constructor for the > service was being called. As the KNClient is not a service, just a > component, it is automatically immediate. > > Thanks for your help! > > - Joel > > > -----Original Message----- > > From: Clement Escoffier [mailto:[email protected]] > > Sent: Wednesday, September 23, 2009 12:53 AM > > To: [email protected] > > Subject: Re: @Requires : ServiceFactory.getService() resulted in a > cycle. > > > > 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] > > > --------------------------------------------------------------------- > 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] --------------------------------------------------------------------- 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]

