<HTML><BODY>Hi Martin<br><br>Thank you very much for your answer. Yes, I asked them. Please see <br><a href="https://groups.google.com/forum/#!topic/ops4j/msmgHq0B1l8">https://groups.google.com/forum/#!topic/ops4j/msmgHq0B1l8</a> <br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Вторник, 9 мая 2017, 12:22 +03:00 от Martin Kouba <mkouba@redhat.com>:<br>
        <br>
        <div id="">
        
<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
<div id="style_14943217510000000739_BODY">Hi Alex,<br>
<br>
I don't know much about Felix and OSGi but it seems the <br>
org.apache.felix.framework.Felix.acquireGlobalLock() is waiting to wake <br>
up and the thread holds lock on <br>
org.jboss.weld.util.bytecode.ClassFileUtils. Have you tried PAX CDI guys <br>
already?<br>
<br>
Martin<br>
<br>
Dne 9.5.2017 v 09:04 Alex Sviridov napsal(a):<br>
> Hi all<br>
><br>
> I use pax-cdi 1.0.0.RC2 with weld-osgi-bundle 2.3.5. And I have two<br>
> bundles: bundleA and bundleB.<br>
><br>
> BundleB has CDI beans and CDI container is created for bundleB. Besides<br>
> bundleB depends on bundleA.<br>
><br>
> Now I update bundleA and do osgi refresh using this code<br>
><br>
> |Bundle systemBundle = bundleContext.getBundle(0);<br>
> FrameworkWiring frameworkWiring =<br>
> systemBundle.adapt(FrameworkWiring.class);<br>
> frameworkWiring.refreshBundles(null);<br>
><br>
> What I see in log of bundle B.<br>
><br>
> |2017-05-08 12:31:42,831 | DEBUG | xFrameworkWiring | ? | BundleEvent STOPPING - com.bundleB<br>
> 2017-05-08 12:31:42,832 | DEBUG | xFrameworkWiring | ? | ServiceEvent UNREGISTERING - [java.lang.Object] - com.bundleB<br>
> 2017-05-08 12:31:42,832 | DEBUG | xFrameworkWiring | ? | BundleEvent STOPPED - com.bundleB<br>
> 2017-05-08 12:31:42,845 | DEBUG | xFrameworkWiring | ? | BundleEvent UNRESOLVED - com.bundleB<br>
> 2017-05-08 12:31:42,885 | DEBUG | xFrameworkWiring | ? | BundleEvent RESOLVED - com.bundleB<br>
> 2017-05-08 12:31:42,886 | DEBUG | xFrameworkWiring | ? | BundleEvent STARTING - com.bundleB<br>
> 2017-05-08 12:31:43,164 | DEBUG | xFrameworkWiring | ? | ServiceEvent REGISTERED - [java.lang.Object] - com.bundleB<br>
> |<br>
> Please,note that bundleB didn't change state to STARTED. When I don't<br>
> use in bundleB CDI<br>
> beans and CDI container is not created for bundleB then everything is ok<br>
> - after bundleA<br>
> update and osgi refresh bundleB reaches STARTED state.<br>
><br>
> Is this a bug of weld or something else? This is some thread dump:<br>
><br>
> "weld-worker-3" #146 daemon prio=5 os_prio=0 tid=0x00007f3e08044000<br>
> nid=0x1dc8 waiting for monitor entry [0x00007f3dd867a000]<br>
> java.lang.Thread.State: BLOCKED (on object monitor)<br>
> at<br>
> org.jboss.weld.util.bytecode.ClassFileUtils.toClass2(ClassFileUtils.java:108)<br>
> - waiting to lock <0x00000000fd03aa50> (a java.lang.Class for<br>
> org.jboss.weld.util.bytecode.ClassFileUtils)<br>
> at<br>
> org.jboss.weld.util.bytecode.ClassFileUtils.toClass(ClassFileUtils.java:97)<br>
> at<br>
> org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:491)<br>
> at<br>
> org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:364)<br>
> at<br>
> org.jboss.weld.bean.builtin.AbstractFacadeBean.initializeAfterBeanDiscovery(AbstractFacadeBean.java:61)<br>
> at<br>
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:136)<br>
> at<br>
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:127)<br>
> at<br>
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)<br>
> at<br>
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)<br>
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)<br>
> at<br>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)<br>
> at<br>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)<br>
> at java.lang.Thread.run(Thread.java:745)<br>
><br>
> "weld-worker-1" #144 daemon prio=5 os_prio=0 tid=0x00007f3e08042800<br>
> nid=0x1dc6 in Object.wait() [0x00007f3dd967e000]<br>
> java.lang.Thread.State: WAITING (on object monitor)<br>
> at java.lang.Object.wait(Native Method)<br>
> at java.lang.Object.wait(Object.java:502)<br>
> at org.apache.felix.framework.Felix.acquireGlobalLock(Felix.java:5332)<br>
> - locked <0x00000000ed6de970> (a [Ljava.lang.Object;)<br>
> at<br>
> org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:481)<br>
> at<br>
> org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1652)<br>
> at<br>
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1552)<br>
> at<br>
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)<br>
> at<br>
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)<br>
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)<br>
> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1925)<br>
> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:978)<br>
> at<br>
> org.apache.xbean.osgi.bundle.util.DelegatingBundle.loadClass(DelegatingBundle.java:170)<br>
> at<br>
> org.apache.xbean.osgi.bundle.util.BundleClassLoader.loadClass(BundleClassLoader.java:75)<br>
> at java.lang.ClassLoader.loadClass(ClassLoader.java:411)<br>
> - locked <0x00000000fb14e428> (a<br>
> org.ops4j.pax.cdi.weld.impl.util.BundleClassLoader)<br>
> at<br>
> org.ops4j.pax.cdi.weld.impl.util.BundleClassLoader.loadClass(BundleClassLoader.java:193)<br>
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)<br>
> at java.lang.ClassLoader.defineClass1(Native Method)<br>
> at java.lang.ClassLoader.defineClass(ClassLoader.java:760)<br>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
> at<br>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)<br>
> at<br>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
> at java.lang.reflect.Method.invoke(Method.java:497)<br>
> at<br>
> org.jboss.weld.util.bytecode.ClassFileUtils.toClass2(ClassFileUtils.java:108)<br>
> - locked <0x00000000fd03aa50> (a java.lang.Class for<br>
> org.jboss.weld.util.bytecode.ClassFileUtils)<br>
> at<br>
> org.jboss.weld.util.bytecode.ClassFileUtils.toClass(ClassFileUtils.java:97)<br>
> at<br>
> org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:491)<br>
> at<br>
> org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:364)<br>
> at<br>
> org.jboss.weld.bean.builtin.AbstractFacadeBean.initializeAfterBeanDiscovery(AbstractFacadeBean.java:61)<br>
> at<br>
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:136)<br>
> at<br>
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:127)<br>
> at<br>
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)<br>
> at<br>
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)<br>
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)<br>
> at<br>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)<br>
> at<br>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)<br>
> at java.lang.Thread.run(Thread.java:745)<br>
><br>
> "FelixFrameworkWiring" #17 daemon prio=5 os_prio=0<br>
> tid=0x00007f3e74410800 nid=0x1c6e waiting on condition [0x00007f3e5e579000]<br>
> java.lang.Thread.State: WAITING (parking)<br>
> at sun.misc.Unsafe.park(Native Method)<br>
> - parking to wait for <0x00000000fb86f398> (a<br>
> java.util.concurrent.FutureTask)<br>
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)<br>
> at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)<br>
> at java.util.concurrent.FutureTask.get(FutureTask.java:191)<br>
> at<br>
> java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:244)<br>
> at<br>
> org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions(AbstractExecutorServices.java:43)<br>
> at<br>
> org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions(AbstractExecutorServices.java:51)<br>
> at<br>
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer.doAfterBeanDiscovery(ConcurrentBeanDeployer.java:113)<br>
> at<br>
> org.jboss.weld.bootstrap.BeanDeployment.afterBeanDiscovery(BeanDeployment.java:271)<br>
> at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:434)<br>
> at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)<br>
> - locked <0x00000000fad0fc60> (a org.jboss.weld.bootstrap.WeldBootstrap)<br>
> at<br>
> org.ops4j.pax.cdi.weld.impl.WeldCdiContainer.createBeanManager(WeldCdiContainer.java:133)<br>
> at<br>
> org.ops4j.pax.cdi.weld.impl.WeldCdiContainer.access$000(WeldCdiContainer.java:57)<br>
> at<br>
> org.ops4j.pax.cdi.weld.impl.WeldCdiContainer$1.call(WeldCdiContainer.java:98)<br>
> at<br>
> org.ops4j.pax.cdi.spi.AbstractCdiContainer.doWithClassLoader(AbstractCdiContainer.java:151)<br>
> at<br>
> org.ops4j.pax.cdi.weld.impl.WeldCdiContainer.doStart(WeldCdiContainer.java:94)<br>
> at<br>
> org.ops4j.pax.cdi.spi.AbstractCdiContainer.start(AbstractCdiContainer.java:85)<br>
> - locked <0x00000000facbf020> (a<br>
> org.ops4j.pax.cdi.weld.impl.WeldCdiContainer)<br>
> at<br>
> org.ops4j.pax.cdi.extender.impl.CdiExtender.createContainer(CdiExtender.java:184)<br>
> at<br>
> org.ops4j.pax.cdi.extender.impl.CdiExtender.addingBundle(CdiExtender.java:133)<br>
> - locked <0x00000000edd04c60> (a<br>
> org.ops4j.pax.cdi.extender.impl.CdiExtender)<br>
> at<br>
> org.ops4j.pax.cdi.extender.impl.CdiExtender.addingBundle(CdiExtender.java:64)<br>
> at<br>
> org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469)<br>
> at<br>
> org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415)<br>
> at<br>
> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)<br>
> at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)<br>
> at<br>
> org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)<br>
> at<br>
> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:916)<br>
> at<br>
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:835)<br>
> at<br>
> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:517)<br>
> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4541)<br>
> at org.apache.felix.framework.Felix.startBundle(Felix.java:2172)<br>
> at org.apache.felix.framework.Felix$RefreshHelper.restart(Felix.java:5063)<br>
> at org.apache.felix.framework.Felix.refreshPackages(Felix.java:4253)<br>
> at<br>
> org.apache.felix.framework.FrameworkWiringImpl.run(FrameworkWiringImpl.java:188)<br>
> at java.lang.Thread.run(Thread.java:745)|<br>
><br>
><br>
><br>
><br>
> --<br>
> Alex Sviridov<br>
><br>
><br>
> _______________________________________________<br>
> weld-dev mailing list<br>
> <a href="mailto:weld-dev@lists.jboss.org">weld-dev@lists.jboss.org</a><br>
> <a href="https://lists.jboss.org/mailman/listinfo/weld-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/weld-dev</a><br>
><br>
<br>
-- <br>
Martin Kouba<br>
Senior Software Engineer<br>
Red Hat, Czech Republic<br>
</div>
                <base target="_self" href="https://e.mail.ru/">
        </div>
        
</div>
</div>
</blockquote>
<br>
<br>-- <br>Alex Sviridov<br></BODY></HTML>