Andrei Shakirin created KARAF-6068:
--------------------------------------

             Summary: Karaf hangs by bundle resolving (felix resolver)
                 Key: KARAF-6068
                 URL: https://issues.apache.org/jira/browse/KARAF-6068
             Project: Karaf
          Issue Type: Bug
          Components: karaf
    Affects Versions: 4.1.5
         Environment: JDK 8
Windows, Linux
            Reporter: Andrei Shakirin


I faced following situation in project uses Karaf as deployment container for 
microservices:
1) bundle A is installed with feature A and exports java packages xxx.yyy in 
version 10.2.0
2) additionally, bundle B was created and installed with feature B. Bundle B 
exporting the same java packages (xxx.yyy)  as bundle A, but with another 
version 1.1.0

Problem: as soon as other modules importing java packages (xxx.yyy) with 
version [1.1, 2.0) - Karaf completely hangs on startup. There are no logs 
describing the problem. The last log statement is about JMX registration.
Karaf JVM takes about 90% CPU - looks like infinite loop.

The thread dump shows that threads occupied CPU are the following:
{code}
"pool-38-thread-8" #245 prio=5 os_prio=0 tid=0x000000001cd94000 nid=0x3094 
runnable [0x0000000029f0e000]
   java.lang.Thread.State: RUNNABLE
        at 
org.apache.felix.resolver.util.ArrayMap.getOrCompute(ArrayMap.java:74)
        at 
org.apache.felix.resolver.ResolverImpl.addUsedBlame(ResolverImpl.java:1284)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1110)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1111)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1111)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1105)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1105)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1105)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1105)
        at 
org.apache.felix.resolver.ResolverImpl.mergeUses(ResolverImpl.java:1105)
        at 
org.apache.felix.resolver.ResolverImpl.computeUses(ResolverImpl.java:872)
        at 
org.apache.felix.resolver.ResolverImpl.access$500(ResolverImpl.java:59)
        at org.apache.felix.resolver.ResolverImpl$6.run(ResolverImpl.java:1231)
        at 
org.apache.felix.resolver.ResolverImpl$EnhancedExecutor$1.run(ResolverImpl.java:2442)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
{code}

Full logs, thread dumps are attached.

The problem makes diagnostic of package exports/imports issues completely 
impossible. 
I will try to reproduce it on simple example, but perhaps you can start analyse 
based om thread dumps.




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

Reply via email to