You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Karl Pauls (JIRA)" <ji...@apache.org> on 2019/02/22 22:41:00 UTC

[jira] [Resolved] (FELIX-6067) ClassLoading can fail unpredictably due to interrupts

     [ https://issues.apache.org/jira/browse/FELIX-6067?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karl Pauls resolved FELIX-6067.
-------------------------------
    Resolution: Fixed

Fixed in r1854178.

> ClassLoading can fail unpredictably due to interrupts
> -----------------------------------------------------
>
>                 Key: FELIX-6067
>                 URL: https://issues.apache.org/jira/browse/FELIX-6067
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-6.0.2
>            Reporter: Robert Munteanu
>            Assignee: Karl Pauls
>            Priority: Major
>             Fix For: framework-6.0.3
>
>
> I noticed an intermittent issue with our Felix-based app (Apache Sling). The flows seems to be the following:
> (thread 1)
> - component C is started
> - component C invokes method on class K1
> - class K1 is first accessed now and runs class initializers
> - K1 static initializer calls method from class K2
> - class K2 loading is triggered
> (thread 2)
> - component C is stopped ( I _think_ due to configuration coming in )
> (thread 1)
> - during class loading of K2 a RuntimeException is thrown, resulting in all calls to K1 leading to NoClassDefFoundError 
> At this point although the error should be transient the component is unusable since one of the classes it uses is not available.
> For the record, the stack trace which causes this is
> {noformat}
> 21.02.2019 14:50:50.292 *ERROR* [Apache Sling Repository Startup Thread #1] org.apache.sling.jcr.oak.server.internal.OakSlingRepositoryManager start: Uncaught Throwable trying to access Repository, calling stopRepository()
> java.lang.ExceptionInInitializerError: null
>         at org.apache.sling.jcr.oak.server.internal.OakSlingRepositoryManager.acquireRepository(OakSlingRepositoryManager.java:144) [org.apache.sling.jcr.oak.server:1.2.0]
>         at org.apache.sling.jcr.base.AbstractSlingRepositoryManager.initializeAndRegisterRepositoryService(AbstractSlingRepositoryManager.java:481) [org.apache.sling.jcr.base:3.0.6]
>         at org.apache.sling.jcr.base.AbstractSlingRepositoryManager.access$300(AbstractSlingRepositoryManager.java:86) [org.apache.sling.jcr.base:3.0.6]
>         at org.apache.sling.jcr.base.AbstractSlingRepositoryManager$4.run(AbstractSlingRepositoryManager.java:462) [org.apache.sling.jcr.base:3.0.6]
> Caused by: java.lang.RuntimeException: java.lang.InterruptedException
>         at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:369)
>         at org.apache.felix.framework.Felix.getService(Felix.java:3954)
>         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.transformClass(BundleWiringImpl.java:2383)
>         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2081)
>         at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1565)
>         at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
>         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory.createSystemRoot(RootFactory.java:80) [org.apache.jackrabbit.oak-core:1.8.8]
>         at org.apache.jackrabbit.oak.InitialContent.initialize(InitialContent.java:134) [org.apache.jackrabbit.oak-core:1.8.8]
>         at org.apache.jackrabbit.oak.InitialContent.createInitialContent(InitialContent.java:74) [org.apache.jackrabbit.oak-core:1.8.8]
>         at org.apache.jackrabbit.oak.InitialContent.<clinit>(InitialContent.java:70) [org.apache.jackrabbit.oak-core:1.8.8]
>         ... 4 common frames omitted
> Caused by: java.lang.InterruptedException: null
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1302)
>         at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
>         at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:365)
>         ... 15 common frames omitted
> {noformat}
> (source code for all classes is available if needed)
> Starting the component C at any later time fails with
> {noformat}
> 21.02.2019 14:50:50.310 *ERROR* [Apache Sling Repository Startup Thread #2] org.apache.sling.jcr.oak.server.internal.OakSlingRepositoryManager start: Uncaught Throwable trying to access Repository, calling stopRepository()
> java.lang.NoClassDefFoundError: Could not initialize class org.apache.jackrabbit.oak.InitialContent
>         at org.apache.sling.jcr.oak.server.internal.OakSlingRepositoryManager.acquireRepository(OakSlingRepositoryManager.java:144) [org.apache.sling.jcr.oak.server:1.2.0]
>         at org.apache.sling.jcr.base.AbstractSlingRepositoryManager.initializeAndRegisterRepositoryService(AbstractSlingRepositoryManager.java:481) [org.apache.sling.jcr.base:3.0.6]
>         at org.apache.sling.jcr.base.AbstractSlingRepositoryManager.access$300(AbstractSlingRepositoryManager.java:86) [org.apache.sling.jcr.base:3.0.6]
>         at org.apache.sling.jcr.base.AbstractSlingRepositoryManager$4.run(AbstractSlingRepositoryManager.java:462) [org.apache.sling.jcr.base:3.0.6]
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)