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

          ethorsa created issue -
          ethorsa made changes -
          Issue Type Original: New Feature [ 2 ] New: Bug [ 1 ]

          Hazim Malik added a comment - - edited

          I am getting the same warnings as well, followed by a stack trace:  

           

          2020-01-14 15:22:26.260+0000 [id=30] WARNING j.t.i.j.MissingClassTelemetry#reportException: Added a missed class for missing class telemetry. Class: 
          
          com.sun.faces.application.ActionListenerImpljava.lang.ClassNotFoundException: com.sun.faces.application.ActionListenerImpl at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1388) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1343) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1090) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:315) at net.bull.javamelody.FilterContext.isMojarraAvailable(FilterContext.java:345) at net.bull.javamelody.FilterContext.<clinit>(FilterContext.java:60) at net.bull.javamelody.MonitoringFilter.init(MonitoringFilter.java:148) at net.bull.javamelody.PluginMonitoringFilter.init(PluginMonitoringFilter.java:45) at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.init(HudsonMonitoringFilter.java:61) at hudson.util.PluginServletFilter.addFilter(PluginServletFilter.java:111) at org.jvnet.hudson.plugins.monitoring.PluginImpl.start(PluginImpl.java:141) at hudson.ClassicPluginStrategy.startPlugin(ClassicPluginStrategy.java:401) at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:390) at hudson.PluginManager$2$1$1.run(PluginManager.java:547) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296) at jenkins.model.Jenkins$5.runTask(Jenkins.java:1142) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) 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)

           

          2020-01-14 15:24:09.557+0000 [id=188] 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 at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1388) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1343) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1090) 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.GeneratedMethodAccessor129.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)
          

          Hazim Malik added a comment - - edited I am getting the same warnings as well, followed by a stack trace:     2020-01-14 15:22:26.260+0000 [id=30] WARNING j.t.i.j.MissingClassTelemetry#reportException: Added a missed class for missing class telemetry. Class : com.sun.faces.application.ActionListenerImpljava.lang.ClassNotFoundException: com.sun.faces.application.ActionListenerImpl at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1388) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1343) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1090) at java.base/java.lang. ClassLoader .loadClass( ClassLoader .java:521) at java.base/java.lang. Class .forName0(Native Method) at java.base/java.lang. Class .forName( Class .java:315) at net.bull.javamelody.FilterContext.isMojarraAvailable(FilterContext.java:345) at net.bull.javamelody.FilterContext.<clinit>(FilterContext.java:60) at net.bull.javamelody.MonitoringFilter.init(MonitoringFilter.java:148) at net.bull.javamelody.PluginMonitoringFilter.init(PluginMonitoringFilter.java:45) at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.init(HudsonMonitoringFilter.java:61) at hudson.util.PluginServletFilter.addFilter(PluginServletFilter.java:111) at org.jvnet.hudson.plugins.monitoring.PluginImpl.start(PluginImpl.java:141) at hudson.ClassicPluginStrategy.startPlugin(ClassicPluginStrategy.java:401) at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:390) at hudson.PluginManager$2$1$1.run(PluginManager.java:547) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296) at jenkins.model.Jenkins$5.runTask(Jenkins.java:1142) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) 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)   2020-01-14 15:24:09.557+0000 [id=188] 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 at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1388) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1343) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1090) 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.GeneratedMethodAccessor129.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)

          Oleg Nenashev added a comment -

          Oleg Nenashev added a comment - FYI mramonleon batmat
          Oleg Nenashev made changes -
          Labels New: adoptopenjdk java11 java11-compatibility
          Ramon Leon made changes -
          Assignee New: Ramon Leon [ mramonleon ]

          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 made changes -
          Attachment New: telemetry.log [ 49997 ]

          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.

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

              Created:
              Updated:
              Resolved: