felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: [DS] time for 1.8 release?
Date Tue, 22 Oct 2013 17:27:49 GMT
Hi Pierre,

Thanks for the additional checking.

There are some changes in circular dependency checking for immediate  components.  Each component
marks threads that are trying to get the service instance, and if the thread is already marked,
this code is executed (SimpleComponentManager line 779):

            log( LogService.LOG_ERROR,  "Circular reference detected, getService returning
null", null );
            dumpThreads();

So if this code is activated the result should be very obvious :-)

I don't think this code can be activated  by delayed or service factory components, because
the ServiceRegistry will already have blocked the 2nd getService call on the same thread.
 You should get a message from the ServiceRegistry in this case.  I think this code can only
be activated by an immediate component where trying to fetch one of the reference services
causes a loop back to the service being constructed.

Is it possible that your circular dependencies involve factory components or service factory
components?

I think I'll start the release process and if you come up with anything more concrete before
the vote concludes I'd be happy to stop and try to fix it.

many thanks!
david jencks


 
On Oct 22, 2013, at 9:58 AM, Pierre De Rop <pierre.derop@gmail.com> wrote:

> Hi David,
> 
> it's OK from my side, your last commit has fixed the NPE.
> 
> thanks !  :-)
> 
> Now, today, I did some more tests and I found another problem.
> Unfortunately I did not have time to investigate. So perhaps we can go
> ahead with a release, and later, if I really find something then I will get
> back to the forum ... it's probably some kind of circular dependencies we
> have in some of our product ... not sure for now.
> 
> So, I wonder if the new upcoming SCR release is making some more checking
> regarding cycle detection ? And does SCR log some warnings when it detects
> some circular loops ?
> 
> thanks;
> 
> best regards;
> /Pierre
> 
> 
> 
> On Tue, Oct 22, 2013 at 12:11 AM, David Jencks <david_jencks@yahoo.com>wrote:
> 
>> Hi Pierre,
>> 
>> I opened https://issues.apache.org/jira/browse/FELIX-4287 and committed
>> what I think is a fix :-).  This prompted me to clean up the mess of
>> deactivate/dispose methods so that was a very good thing :-)
>> 
>> I got my maven configuration straightened out so I can deploy snapshots,
>> and that should be enough to deploy release candidates too.
>> 
>> Could you check out the fix?  I'll run some tests here too.
>> 
>> many thanks!
>> david jencks
>> 
>> 
>> On Oct 21, 2013, at 1:11 AM, Pierre De Rop <pierre.derop@gmail.com> wrote:
>> 
>>> Hi David,
>>> 
>>> I did some quick tests, and the trunk seems to work seamlessly in our our
>>> DS based products.
>>> Also checked that all tests are passing ok in scr maven tests.
>>> 
>>> Just one thing that I noticed: In one of our products, I'm getting the
>>> following exception, when stopping the framework (Ctrl-C from gogo
>> shell):
>>> I did not have time to investigate it but I copy/past it here, so you can
>>> check it:
>>> 
>>> 2013-10-21 09:39:49,862 [FelixStartLevel] ERROR
>>> com.alcatel_lucent.as.service.composite.impl.CompositeManager  - Error
>>> processing task
>>> java.lang.NullPointerException
>>>      at
>>> 
>> org.apache.felix.scr.impl.BundleComponentActivator.unregisterComponentId(BundleComponentActivator.java:500)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.clear(AbstractComponentManager.java:1157)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.SingleComponentManager.clear(SingleComponentManager.java:109)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:890)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:576)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:561)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.ComponentContextImpl$ComponentInstanceImpl.dispose(ComponentContextImpl.java:226)
>>>      at
>>> 
>> com.alcatel_lucent.as.service.composite.impl.CompositeFactoryImpl$CompositeInstanceImpl$1.run(CompositeFactoryImpl.java:86)
>>>      at
>>> 
>> com.alcatel_lucent.as.service.composite.impl.SerialExecutor.execute(SerialExecutor.java:36)
>>>      at
>>> 
>> com.alcatel_lucent.as.service.composite.impl.CompositeManager.stop(CompositeManager.java:105)
>>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>      at
>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>      at
>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>      at java.lang.reflect.Method.invoke(Method.java:601)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624)
>>>      at
>>> org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.SingleComponentManager.disposeImplementationObject(SingleComponentManager.java:338)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.SingleComponentManager.deleteComponent(SingleComponentManager.java:170)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:907)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:855)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.removedService(DependencyManager.java:945)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.removedService(DependencyManager.java:871)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1503)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1398)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:1258)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1437)
>>>      at
>>> 
>> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
>>>      at
>>> 
>> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
>>>      at
>>> 
>> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
>>>      at
>> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4401)
>>>      at org.apache.felix.framework.Felix.access$000(Felix.java:74)
>>>      at
>> org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
>>>      at
>>> 
>> org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:151)
>>>      at
>>> 
>> org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
>>>      at
>>> 
>> com.alcatel_lucent.as.service.composite.impl.CompositeAdminImpl$1.run(CompositeAdminImpl.java:75)
>>>      at
>>> 
>> com.alcatel_lucent.as.service.composite.impl.SerialExecutor.execute(SerialExecutor.java:36)
>>>      at
>>> 
>> com.alcatel_lucent.as.service.composite.impl.CompositeAdminImpl.stop(CompositeAdminImpl.java:66)
>>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>      at
>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>      at
>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>      at java.lang.reflect.Method.invoke(Method.java:601)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624)
>>>      at
>>> org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508)
>>>      at
>>> 
>> org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.SingleComponentManager.disposeImplementationObject(SingleComponentManager.java:338)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.SingleComponentManager.deleteComponent(SingleComponentManager.java:170)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:907)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:889)
>>>      at
>>> 
>> org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:576)
>>>      at
>>> 
>> org.apache.felix.scr.impl.config.ConfigurableComponentHolder.disposeComponents(ConfigurableComponentHolder.java:421)
>>>      at
>>> 
>> org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:336)
>>>      at
>>> org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:290)
>>>      at
>> org.apache.felix.scr.impl.Activator.access$100(Activator.java:44)
>>>      at
>> org.apache.felix.scr.impl.Activator$1.destroy(Activator.java:174)
>>>      at
>>> 
>> org.apache.felix.utils.extender.AbstractExtender$2.run(AbstractExtender.java:285)
>>>      at
>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>>      at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>>>      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>>>      at
>>> 
>> org.apache.felix.utils.extender.AbstractExtender.destroyExtension(AbstractExtender.java:307)
>>>      at
>>> 
>> org.apache.felix.utils.extender.AbstractExtender.bundleChanged(AbstractExtender.java:181)
>>>      at
>>> 
>> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)
>>>      at
>>> 
>> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)
>>>      at
>>> 
>> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:514)
>>>      at
>> org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4385)
>>>      at org.apache.felix.framework.Felix.stopBundle(Felix.java:2508)
>>>      at
>>> org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1297)
>>>      at
>>> 
>> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
>>>      at java.lang.Thread.run(Thread.java:722)
>>> 
>>> 
>>> best regards;
>>> /Pierre
>>> 
>>> Le 20 oct. 2013 07:50, "David Jencks" <david_jencks@yahoo.com> a écrit
:
>>>> 
>>>> I haven't found any new problems with DS recently and am running out of
>>> refactoring and code cleanup ideas  so I think it might be time to work
>> on
>>> releasing DS 1.8.  If anyone wants to do any last minute testing or code
>>> reviews that would be great.  If nothing comes up I expect to suggest
>>> starting the release process early next week.
>>>> 
>>>> I'm not sure what the felix community usually does about release
>>> managers.  I'd be equally happy being the release manager or leaving it
>> to
>>> someone who has done it before.  I think I don't currently have the
>>> necessary nexus permissions to release, but this should be easy to fix.
>>>> 
>>>> many thanks
>>>> david jencks
>>>> 
>> 
>> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message