Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60725

"Added a missed class for missing class telemetry" on AdoptOpenJDK 11

    • 2,217

      Since the update to Java 11 (using AdoptOpenJDK 11.0.4) there are some warnings according to missing telemetry classes in the log:

       

      WARNING	j.t.i.j.MissingClassTelemetry#reportException: Added a missed class for missing class telemetry. Class: com.sun.faces.application.ActionListenerImpl
      java.lang.ClassNotFoundException: com.sun.faces.application.ActionListenerImpl
      [...]
      WARNING	j.t.i.j.MissingClassTelemetry#reportException: Added a missed class for missing class telemetry. Class: com.sun.jndi.url.java.javaURLContextFactory
      java.lang.ClassNotFoundException: com.sun.jndi.url.java.javaURLContextFactory
      [...]
      WARNING	j.t.i.j.MissingClassTelemetry#reportException: Added a missed class for missing class telemetry. Class: com.sun.jndi.url.java.javaURLContextFactory
      java.lang.ClassNotFoundException: com.sun.jndi.url.java.javaURLContextFactory
      [...]
      

      The one related to javaURLContextFactory appears several times

       

      Use statistics is disabled in the global configuration (that's telemetry?)

          [JENKINS-60725] "Added a missed class for missing class telemetry" on AdoptOpenJDK 11

          Oleg Nenashev added a comment -

          Oleg Nenashev added a comment - FYI mramonleon batmat

          Ramon Leon added a comment -

          Hi ethorsa, yes, it's telemetry. Although the information is not sent because the statistics are disabled, Jenkins warn you using the log. This symptom is because a plugin is using this class and AdoptOpenJDK doesn't have it, because it's sun's specific implementation. It may be a problem or not, it depends on the root cause. I would need the stack traces to be able to analyze each missed class.

          For the first stack trace from hazim, it is expected:
          https://github.com/javamelody/javamelody/blob/master/javamelody-core/src/main/java/net/bull/javamelody/FilterContext.java#L349

          	private static boolean isMojarraAvailable() {
          		try {
          			Class.forName("com.sun.faces.application.ActionListenerImpl");
          			return true;
          		} catch (final Throwable e) { // NOPMD
          			return false;
          		}
          	}
          

          So we should upgrade the ignored places adding this one

          I cannot find out any culprit from the second stack trace. Maybe Jenkins master is running on an Oracle JDK and the agent is running with AdoptOpenJDK or another one?

          Ramon Leon added a comment - Hi ethorsa , yes, it's telemetry. Although the information is not sent because the statistics are disabled, Jenkins warn you using the log. This symptom is because a plugin is using this class and AdoptOpenJDK doesn't have it, because it's sun's specific implementation. It may be a problem or not, it depends on the root cause. I would need the stack traces to be able to analyze each missed class. For the first stack trace from hazim , it is expected: https://github.com/javamelody/javamelody/blob/master/javamelody-core/src/main/java/net/bull/javamelody/FilterContext.java#L349 private static boolean isMojarraAvailable() { try { Class .forName( "com.sun.faces.application.ActionListenerImpl" ); return true ; } catch ( final Throwable e) { // NOPMD return false ; } } So we should upgrade the ignored places adding this one I cannot find out any culprit from the second stack trace. Maybe Jenkins master is running on an Oracle JDK and the agent is running with AdoptOpenJDK or another one?

          ethorsa added a comment -

          The Master and majority of the agents are running on AdopOpenJDK. However, there are some remaining Windows agents with Oracle JDK left (and of course the Linux agents are using OpenJDK).

          ethorsa added a comment - The Master and majority of the agents are running on AdopOpenJDK. However, there are some remaining Windows agents with Oracle JDK left (and of course the Linux agents are using OpenJDK).

          ethorsa added a comment -

          mramonleon I've added full stacktraces for both classes. From a first look they seem same as hazim ones.

          ethorsa added a comment - mramonleon  I've added full stacktraces for both classes. From a first look they seem same as  hazim ones.

          Ramon Leon added a comment -

          I've filed a PR to add this place as an ignored one, to avoid warning about that on logs: https://github.com/jenkinsci/jenkins/pull/4433

          Meanwhile, you don't need to worry about this warning, it's a false positive on Java 11. If you don't want to see this warning you can raise the logging level on this specific logger.

          Thank you for your feedback.

          Ramon Leon added a comment - I've filed a PR to add this place as an ignored one, to avoid warning about that on logs: https://github.com/jenkinsci/jenkins/pull/4433 Meanwhile, you don't need to worry about this warning, it's a false positive on Java 11. If you don't want to see this warning you can raise the logging level on this specific logger. Thank you for your feedback.

          ethorsa added a comment -

          Thanks for this fast fix mramonleon!

          ethorsa added a comment - Thanks for this fast fix mramonleon !

          Hazim Malik added a comment -

          Thanks for the quick response and fix mramonleon

          Hazim Malik added a comment - Thanks for the quick response and fix mramonleon

          Thomas Gimpel added a comment -

          Running on 2.204.5 we still get these warnings:

          Added a missed class for missing class telemetry. Class: com.sun.jndi.url.java.javaURLContextFactory
          java.lang.ClassNotFoundException: com.sun.jndi.url.java.javaURLContextFactory
          	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1383)
          	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1336)
          	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1083)
          	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
          	at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch4(RemoteClassLoader.java:846)
          	at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch3(RemoteClassLoader.java:889)
          	at jdk.internal.reflect.GeneratedMethodAccessor68.invoke(Unknown Source)
          	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
          	at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:929)
          	at hudson.remoting.Request$2.run(Request.java:369)
          	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
          	at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18)
          	at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
          	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
          	at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:71)
          	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
          	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          	at java.base/java.lang.Thread.run(Thread.java:834)
          

           

          Thomas Gimpel added a comment - Running on 2.204.5 we still get these warnings: Added a missed class for missing class telemetry. Class : com.sun.jndi.url.java.javaURLContextFactory java.lang.ClassNotFoundException: com.sun.jndi.url.java.javaURLContextFactory at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1383) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1336) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1083) at java.base/java.lang. ClassLoader .loadClass( ClassLoader .java:521) at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch4(RemoteClassLoader.java:846) at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch3(RemoteClassLoader.java:889) at jdk.internal.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:929) at hudson.remoting.Request$2.run(Request.java:369) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18) at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21) at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:71) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang. Thread .run( Thread .java:834)  

          ethorsa added a comment -

          I get the same warnings on 2.204.5.

          ethorsa added a comment - I get the same warnings on 2.204.5.

          Ramon Leon added a comment - - edited

          The one fixed by the PR is related to javamelody, if you don't mind, please file a new ticket with a single stack trace to keep track of the issue and file a new PR to fix it if needed. You can assign it to me.

          In any case, it's not something to worry about, just to be sure Jenkins goes well on Java 11, although better to remove from logs.

          Thank you!

          Ramon Leon added a comment - - edited The one fixed by the PR is related to javamelody , if you don't mind, please file a new ticket with a single stack trace to keep track of the issue and file a new PR to fix it if needed. You can assign it to me. In any case, it's not something to worry about, just to be sure Jenkins goes well on Java 11, although better to remove from logs. Thank you!

            mramonleon Ramon Leon
            ethorsa ethorsa
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: