Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-6729

Infinite recursion observed with Felix Main and Felix Framework jar usage

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Blocker
    • Resolution: Unresolved
    • framework-7.0.5
    • framework-7.0.5
    • Framework, Main
    • None

    Description

      The Custom Plugin which references the "org.apache.felix.org.apache.felix.main.jar" and "org.apache.felix.framework.jar" 3rd Party jars is deployed on WLS (Oracle WebLogic Server). The Felix Framework jar is used in the Custom Plugin to enable the plugin to interact with the OAM (Oracle Access Manager) system wherein it helps in integrating the custom plugin with the OAM seamlessly and efficiently.

      However there is an intermittent issue that is observed during the initialization phase (Deployed Server restart) of the custom plugin wherein repeated looping is observed with the below mentioned stack upon  java.net.URL usage.

      This results in Stack Over Exception with an abnormal compressed class space growth that eventually leads to Out of Memory exception and thereby the JVM crashes. The only workaround available with us now is to perform the Server restart on which the custom plugin is deployed so that the Full GC is triggered and thereby the compressed class space is cleared as a temporary relief to the issue. We would like to have the URL Handler related looping stack from Felix Main and Framework to be investigated to devise a solution from Apache team, to resolve the issue (This seems to be a race condition scenario based on issue symptoms). 

              at org.apache.felix.framework.util.SecureAction.getDeclaredMethod(SecureAction.java:850)
              at org.apache.felix.framework.URLHandlers.getFrameworkFromContext(URLHandlers.java:752)
              at org.apache.felix.framework.URLHandlersStreamHandlerProxy.getStreamHandlerService(URLHandlersStreamHandlerProxy.java:574)
              at org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:369)
              at java.net.URL.<init>(URL.java:639)
              at java.net.URL.<init>(URL.java:507)

      **********

      The complete stack trace having the deep recursive call related to Felix jar is pasted below for your reference:

      <FINER> <ClassLoader> Thread [ACTIVE] ExecuteThread: '37' for queue: 'weblogic.kernel.Default (self-tuning)' Defining org.osgi.service.packageadmin.ExportedPackage from file:/p01/app/oracle/oam12c/wlserver/server/lib/org.apache.felix.org.apache.felix.main.jar in 'weblogic-launcher'
      java.lang.Exception

              at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1340)
              at sun.misc.URLClassPath.getResource(URLClassPath.java:250)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
              at java.lang.Class.getDeclaredMethods0(Native Method)
              at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
              at java.lang.Class.getDeclaredMethod(Class.java:2128)
              at org.apache.felix.framework.util.SecureAction.getDeclaredMethod(SecureAction.java:850)
              at org.apache.felix.framework.URLHandlers.getFrameworkFromContext(URLHandlers.java:752)
              at org.apache.felix.framework.URLHandlersStreamHandlerProxy.getStreamHandlerService(URLHandlersStreamHandlerProxy.java:574)
              at org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:369)
              at java.net.URL.<init>(URL.java:639)
              at java.net.URL.<init>(URL.java:507)

              at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1340)
              at sun.misc.URLClassPath.getResource(URLClassPath.java:250)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
              at java.lang.Class.getDeclaredMethods0(Native Method)
              at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
              at java.lang.Class.getDeclaredMethod(Class.java:2128)
              at org.apache.felix.framework.util.SecureAction.getDeclaredMethod(SecureAction.java:850)
              at org.apache.felix.framework.URLHandlers.getFrameworkFromContext(URLHandlers.java:752)
              at org.apache.felix.framework.URLHandlersStreamHandlerProxy.getStreamHandlerService(URLHandlersStreamHandlerProxy.java:574)
              at org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:369)
              at java.net.URL.<init>(URL.java:639)
              at java.net.URL.<init>(URL.java:507)

              at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1340)
              at sun.misc.URLClassPath.getResource(URLClassPath.java:250)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
              at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
              at java.security.AccessController.doPrivileged(Native Method)
              at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
              at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
              at java.lang.Class.getDeclaredMethods0(Native Method)
              at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
              at java.lang.Class.getDeclaredMethod(Class.java:2128)
              at org.apache.felix.framework.util.SecureAction.getDeclaredMethod(SecureAction.java:850)

        

       

       

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            mahesh.kantharaj Mahesh Kantharaj
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 168h
                168h
                Remaining:
                Remaining Estimate - 168h
                168h
                Logged:
                Time Spent - Not Specified
                Not Specified