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]

Reply via email to