Hi Am 25.09.2013 um 10:42 schrieb Rudolph, Dirk:
> That's right. I also think the issue is related to FELIX-3067. Should I > describe the issue their again (just for completeness)? Yes, that might be a good idea. And you also might want to attach the thread dump Regards Felix > > We will split the bundles based on technology used. > > Thanks a lot, > Dirk > > -----Ursprüngliche Nachricht----- > Von: Felix Meschberger [mailto:[email protected]] > Gesendet: Mittwoch, 25. September 2013 10:01 > An: [email protected] > Betreff: Re: Are bundles containing declerative services and blueprint > possible? > > Hi > > Am 25.09.2013 um 09:21 schrieb Rudolph, Dirk: > >> Thanks for your response. >> >> The state of the bundle is ACTIVE. Unfortunately the original Exception >> causing the previously attacked ISE isn't passed to the ISE itself and >> therefore not in the stacktrace: >> >> ERROR: [Thread[FelixDispatchQueue,5,main]] Waited too long to acquire the >> global lock own by Thread[FelixPackageAdmin,5,main]; giving up. >> java.lang.IllegalStateException: [Thread[Blueprint Extender: 3,5,main]] >> Waited too long to acquire lock for bundle ******* [516] owned by null >> (lockcount=0) >> at org.apache.felix.framework.Felix.acquireBundleLock(Felix.java:4756) >> at org.apache.felix.framework.Felix.registerService(Felix.java:2820) >> at >> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251) >> at >> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:229) > > Just know that this is an Adobe build of the framework which contains this > deadlock prevention not contained in the official release. The problem looks > related to FELIX-3067 [1]. > >> >> This happens because m_globalLockThread isn't null. Just for my >> understanding: Why is it necessary for the FelixPackageAdmin Thread to hold >> a global lock and not a bundle lock only? > > Because the resolving bundle dependencies may involve multiple bundles at the > same time which must be prevented from having their state changed. > >> >> Just for summary: A quick solution would be to split the bundle in one >> containing blueprint and one containing SCR. Another solution would be >> trying to update org.apache.felix.scr to the latest release (with adobe CQ >> this can cause "some" of problems ;-)) > > Yes, splitting might be a good idea. > > Another idea would be to create smaller cohesive bundles with less coupling > to other bundles. For example if you have Import-Package statements listing > roughly 50+ packages is an indicative sign that the respective bundle is not > very cohesive. > > Regards > Felix > > [1] https://issues.apache.org/jira/browse/FELIX-3067 > >> >> Attached you will find the full thread dump, captured on ISE breakpoint in >> registerService(). >> >> Thanks a lot, >> Dirk >> >> >> -----Ursprüngliche Nachricht----- >> Von: David Jencks [mailto:[email protected]] >> Gesendet: Mittwoch, 25. September 2013 00:23 >> An: [email protected] >> Betreff: Re: Are bundles containing declerative services and blueprint >> possible? >> >> I can't see any reason all known osgi component frameworks shouldn't all >> work at once in one bundle. (e.g DS, IPOJO, Blueprint) >> >> Is there a thread dump for when this problem originally occurs? Do you know >> what state the bundle is in when blueprint gets in trouble? What got the >> bundle into this state? >> >> If there's a deadlock between package admin and something else we should fix >> it. (I recall running into some deadlocks like this a long time ago, but >> don't recall the details). Please also try with DS trunk as there are a >> _lot_ of changes even from 1.6.2 and any fix would be made against trunk. >> >> thanks >> david jencks >> >> On Sep 24, 2013, at 3:06 PM, Michael Täschner <[email protected]> wrote: >> >>> Hi Dirk, >>> >>>>> So we assume that the scr bundle activation cannot coexists with the >>> blueprint container for the same bundle. Is this right? >>> >>> Yes, your assumption is correct. One bundle should be managed by one >>> dependency injection implementation only. The DI is managed by the DI >>> frameworks via extender pattern on startup and depending on which >>> extender gets notified first (via bundlelistener) will try to initialize >>> the bundle. >>> Therefore you will run into locks or IllegalStateException depending >>> on the current order of extenders (blueprint, scr, ...) which runs first. >>> >>> Your approach might work - but I don't think it is good style - if the >>> "link" between the beans/components is realized via OSGi service >>> registry (e.g. registering a service using blueprint and a reference >>> in DS and vice >>> versa) still I would strongly suggest sticking to one framework inside >>> one bundle. >>> >>> The benefit of OSGi is the central service registry broker which >>> allows providers and consumers to use their preferred DI approach >>> inside their implementations independently from each other. >>> >>> Best Regards, >>> Michael >>> >>> >>> 2013/9/24 Rudolph, Dirk <[email protected]> >>> >>>> Hi all, >>>> >>>> >>>> >>>> in our project we make use of blueprint and declarative services. >>>> Both of them are part of one bundle running on Apache Felix >>>> (3.0.8.B006, CQ >>>> Version) with Apache Aries 1.0.1 (blueprint, jpa) >>>> >>>> >>>> >>>> Now we noticed, that there are some non-deterministic >>>> IllegalStateExceptions when we redeploy bundles and sometime when we >>>> deploy bundles the first time. (stacktrace attached) >>>> >>>> >>>> >>>> 24.09.2013 12:12:12.990 *ERROR* [Blueprint Extender: 1] >>>> org.apache.aries.blueprint.container.BlueprintContainerImpl Unable to >>>> start blueprint container for bundle ******************* >>>> java.lang.IllegalStateException: Can only register services while >>>> bundle is active or activating. >>>> >>>> at >>>> org.apache.felix.framework.Felix.registerService(Felix.java:2824) >>>> >>>> at >>>> org.apache.felix.framework.BundleContextImpl.registerService(BundleCo >>>> ntextImpl.java:251) >>>> >>>> at >>>> org.apache.felix.framework.BundleContextImpl.registerService(BundleCo >>>> ntextImpl.java:229) >>>> >>>> at >>>> org.apache.aries.jpa.container.context.impl.PersistenceContextManager >>>> .registerEM(PersistenceContextManager.java:286) >>>> >>>> at >>>> org.apache.aries.jpa.container.context.impl.PersistenceContextManager >>>> .registerContext(PersistenceContextManager.java:200) >>>> >>>> at >>>> org.apache.aries.jpa.container.context.impl.GlobalPersistenceManager. >>>> registerContext(GlobalPersistenceManager.java:123) >>>> >>>> at >>>> sun.reflect.GeneratedMethodAccessor398.invoke(Unknown >>>> Source) >>>> >>>> at >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown >>>> Source) >>>> >>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>> >>>> at >>>> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:5 >>>> 4) >>>> >>>> at >>>> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119 >>>> ) >>>> >>>> at $Proxy12.registerContext(Unknown Source) >>>> >>>> at >>>> org.apache.aries.jpa.blueprint.aries.impl.NSHandler.decorate(NSHandle >>>> r.java:235) >>>> >>>> at >>>> sun.reflect.GeneratedMethodAccessor136.invoke(Unknown >>>> Source) >>>> >>>> at >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown >>>> Source) >>>> >>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>> >>>> at >>>> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:5 >>>> 4) >>>> >>>> at >>>> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119 >>>> ) >>>> >>>> at $Proxy9.decorate(Unknown Source) >>>> >>>> at >>>> org.apache.aries.blueprint.parser.Parser.decorateCustomNode(Parser.ja >>>> va:1273) >>>> >>>> at >>>> org.apache.aries.blueprint.parser.Parser.handleCustomElements(Parser. >>>> java:1263) >>>> >>>> at >>>> org.apache.aries.blueprint.parser.Parser.parseBeanMetadata(Parser.jav >>>> a:601) >>>> >>>> at >>>> org.apache.aries.blueprint.parser.Parser.parseBlueprintElement(Parser >>>> .java:393) >>>> >>>> at >>>> org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:3 >>>> 26) >>>> >>>> at >>>> org.apache.aries.blueprint.parser.Parser.populate(Parser.java:277) >>>> >>>> at >>>> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(Blu >>>> eprintContainerImpl.java:315) >>>> >>>> at >>>> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(Bluep >>>> rintContainerImpl.java:261) >>>> >>>> at >>>> java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) >>>> >>>> at >>>> java.util.concurrent.FutureTask$Sync.innerRun(Unknown >>>> Source) >>>> >>>> at java.util.concurrent.FutureTask.run(Unknown Source) >>>> >>>> at >>>> org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(Execu >>>> torServiceWrapper.java:106) >>>> >>>> at >>>> org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.r >>>> un(DiscardableRunnable.java:48) >>>> >>>> at >>>> java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) >>>> >>>> at >>>> java.util.concurrent.FutureTask$Sync.innerRun(Unknown >>>> Source) >>>> >>>> at java.util.concurrent.FutureTask.run(Unknown Source) >>>> >>>> at >>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. >>>> access$201(Unknown >>>> Source) >>>> >>>> at >>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. >>>> run(Unknown >>>> Source) >>>> >>>> at >>>> java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) >>>> >>>> at >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) >>>> >>>> at java.lang.Thread.run(Unknown Source) >>>> >>>> >>>> >>>> After a while of debugging we figured out that the service cannot be >>>> registered because Felix fails to obtain the lock on the bundle. The >>>> lock is hold by the Thread running the Apache Felix >>>> BundleComponentActivator (FelixPackageAdmin). So we assume that the >>>> scr bundle activation cannot coexists with the blueprint container for the >>>> same bundle. Is this right? >>>> Would it be possible to trigger the blueprint container creation >>>> after scr has been processed or vice versa? >>>> >>>> >>>> >>>> Thanks so far, >>>> >>>> >>>> Dirk Rudolph >>>> >>>> >>>> >>>> >>>> T-Systems Multimedia Solutions GmbH >>>> Organisationseinheit CCS >>>> Dirk Rudolph >>>> Software-Entwicklung, OCJP >>>> >>>> Hausanschrift: Riesaer Straße 5, 01129 Dresden >>>> Postanschrift: Postfach 10 02 24, 01072 Dresden >>>> +49 351 2820-5363 (Tel) >>>> E-Mail: [email protected] >>>> <mailto:[email protected] >>>>> >>>> Internet: http://www.t-systems-mms.com <http://www.t-systems-mms.de/> >>>> >>>> T-Systems Multimedia Solutions GmbH >>>> >>>> Aufsichtsrat: Klaus Werner (Vorsitzender) >>>> >>>> Geschäftsführung: Peter Klingenburg, Susanne Heger >>>> >>>> Handelsregister: Amtsgericht Dresden HRB 11433 >>>> >>>> Sitz der Gesellschaft: Dresden >>>> >>>> Ust-IdNr.: DE 811 807 949 >>>> >>>> >>>> >>>> >>>> >>>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> <threaddump-bp.txt> >> --------------------------------------------------------------------- >> 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] >
smime.p7s
Description: S/MIME cryptographic signature

