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

Warnings trend chart does not appear; duplicate classes in echarts-api.jar and echarts-build-trends-2.0.0.jar in ECharts API Plugin

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • echarts-api-plugin
    • None

      On the web page of a branch of a multibranch project, the warnings trend chart does not render. Instead, there is a placeholder with a progress ring and the text "loading". The developer tools in the Web browser show HTTP status 500 from a POST /jenkins/$stapler/bound/6d08ec1b-ebf8-4765-ad4e-b89a4089ea71/getBuildTrendModel request, and the Jenkins log shows various exceptions, depending on plugin and JVM versions and perhaps other things:

      • java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries
      • java.lang.LinkageError: edu.hm.hafner.echarts.LineSeries
      • java.lang.LinkageError: A duplicate class definition for edu/hm/hafner/echarts/JacksonFacade is found
      • java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade"

      The classes edu.hm.hafner.echarts.LineSeries and edu.hm.hafner.echarts.JacksonFacade are defined in both plugins/echarts-api/WEB-INF/lib/echarts-api.jar and plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar. Those jar files are included in plugins/echarts-api.jpi (ECharts API Plugin 5.0.1-1). This seems to be a bug in that plugin, then.

      $ unzip -l plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar
      Archive:  plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar
        Length      Date    Time    Name
      ---------  ---------- -----   ----
            221  2020-05-13 01:12   META-INF/MANIFEST.MF
              0  2020-05-13 01:12   META-INF/
              0  2020-05-13 01:12   edu/
              0  2020-05-13 01:12   edu/hm/
              0  2020-05-13 01:12   edu/hm/hafner/
              0  2020-05-13 01:12   edu/hm/hafner/echarts/
              0  2020-05-13 01:12   META-INF/maven/
              0  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/
              0  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/echarts-build-trends/
           1287  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration.class
           2914  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries.class
          13228  2020-05-13 01:12   edu/hm/hafner/echarts/SeriesBuilder.class
           4002  2020-05-13 01:12   edu/hm/hafner/echarts/LinesDataSet.class
           2313  2020-05-13 01:12   edu/hm/hafner/echarts/Palette.class
           2168  2020-05-13 01:12   edu/hm/hafner/echarts/ResultTime.class
            976  2020-05-13 01:12   edu/hm/hafner/echarts/BuildResult.class
           2743  2020-05-13 01:12   edu/hm/hafner/echarts/LinesChartModel.class
           1247  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration$AxisType.class
           3454  2020-05-13 01:12   edu/hm/hafner/echarts/PercentagePieChart.class
            283  2020-05-13 01:12   edu/hm/hafner/echarts/package-info.class
           1490  2020-05-13 01:12   edu/hm/hafner/echarts/PieData.class
           1689  2020-05-13 01:12   edu/hm/hafner/echarts/PieChartModel.class
           1917  2020-05-13 01:12   edu/hm/hafner/echarts/LocalDateLabel.class
           2111  2020-05-13 01:12   edu/hm/hafner/echarts/Build.class
           1073  2020-05-13 01:12   edu/hm/hafner/echarts/JacksonFacade.class
            579  2020-05-13 01:12   edu/hm/hafner/echarts/AreaStyle.class
            485  2020-05-13 01:12   edu/hm/hafner/echarts/ItemStyle.class
           1176  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$StackedMode.class
           1159  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$FilledMode.class
           1496  2020-05-13 01:12   edu/hm/hafner/echarts/TimeFacade.class
           4969  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/echarts-build-trends/pom.xml
             68  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/echarts-build-trends/pom.properties
      ---------                     -------
          53048                     32 files
      
      $ unzip -l plugins/echarts-api/WEB-INF/lib/echarts-api.jar
      Archive:  plugins/echarts-api/WEB-INF/lib/echarts-api.jar
        Length      Date    Time    Name
      ---------  ---------- -----   ----
              0  2021-03-03 18:04   META-INF/
            808  2021-03-03 18:04   META-INF/MANIFEST.MF
              0  2021-03-03 18:04   edu/
              0  2021-03-03 18:04   edu/hm/
              0  2021-03-03 18:04   edu/hm/hafner/
              0  2021-03-03 18:04   edu/hm/hafner/echarts/
              0  2021-03-03 18:04   io/
              0  2021-03-03 18:04   io/jenkins/
              0  2021-03-03 18:04   io/jenkins/plugins/
              0  2021-03-03 18:04   io/jenkins/plugins/echarts/
              0  2021-03-03 18:04   charts/
           1287  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration.class
           2914  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries.class
          13228  2020-05-13 01:12   edu/hm/hafner/echarts/SeriesBuilder.class
           4002  2020-05-13 01:12   edu/hm/hafner/echarts/LinesDataSet.class
           2313  2020-05-13 01:12   edu/hm/hafner/echarts/Palette.class
           2168  2020-05-13 01:12   edu/hm/hafner/echarts/ResultTime.class
            976  2020-05-13 01:12   edu/hm/hafner/echarts/BuildResult.class
           2743  2020-05-13 01:12   edu/hm/hafner/echarts/LinesChartModel.class
           1247  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration$AxisType.class
           3454  2020-05-13 01:12   edu/hm/hafner/echarts/PercentagePieChart.class
            283  2020-05-13 01:12   edu/hm/hafner/echarts/package-info.class
           1490  2020-05-13 01:12   edu/hm/hafner/echarts/PieData.class
           1689  2020-05-13 01:12   edu/hm/hafner/echarts/PieChartModel.class
           1917  2020-05-13 01:12   edu/hm/hafner/echarts/LocalDateLabel.class
           2111  2020-05-13 01:12   edu/hm/hafner/echarts/Build.class
           1073  2020-05-13 01:12   edu/hm/hafner/echarts/JacksonFacade.class
            579  2020-05-13 01:12   edu/hm/hafner/echarts/AreaStyle.class
            485  2020-05-13 01:12   edu/hm/hafner/echarts/ItemStyle.class
           1176  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$StackedMode.class
           1159  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$FilledMode.class
           1496  2020-05-13 01:12   edu/hm/hafner/echarts/TimeFacade.class
            877  2021-03-03 18:04   io/jenkins/plugins/echarts-common.jelly
            863  2021-03-03 18:04   io/jenkins/plugins/echarts.jelly
           3815  2021-03-03 18:04   io/jenkins/plugins/echarts/BuildActionIterator.class
           3078  2021-03-03 18:04   io/jenkins/plugins/echarts/AsyncTrendJobAction.class
           2209  2021-03-03 18:04   io/jenkins/plugins/echarts/BuildActionIterator$ActionSelector.class
            307  2021-03-03 18:04   io/jenkins/plugins/echarts/AsyncTrendChart.class
            877  2021-03-03 18:04   io/jenkins/plugins/echarts-simple.jelly
              0  2021-03-03 18:04   charts/taglib
           1485  2021-03-03 18:04   charts/trend-chart.jelly
           1476  2021-03-03 18:04   charts/pie-chart.jelly
           1373  2021-03-03 18:04   charts/progress-chart.jelly
              0  2021-03-03 18:04   META-INF/maven/
              0  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/
              0  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/echarts-api/
           5608  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/echarts-api/pom.xml
            116  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/echarts-api/pom.properties
      ---------                     -------
          70682                     48 files
      

          [JENKINS-65261] Warnings trend chart does not appear; duplicate classes in echarts-api.jar and echarts-build-trends-2.0.0.jar in ECharts API Plugin

          io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) seems to be here: https://github.com/jenkinsci/warnings-ng-plugin/blob/16468bc099227b0c17ddbab5b22e83066a807052/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/JobAction.java#L181-L185

          However, I don't see which Jenkins plugin is supposed to define edu.hm.hafner.echarts.JacksonFacade.

          Kalle Niemitalo added a comment - io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) seems to be here: https://github.com/jenkinsci/warnings-ng-plugin/blob/16468bc099227b0c17ddbab5b22e83066a807052/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/JobAction.java#L181-L185 However, I don't see which Jenkins plugin is supposed to define edu.hm.hafner.echarts.JacksonFacade.

          In https://updates.jenkins.io/download/plugins/warnings-ng/8.10.1/warnings-ng.hpi, META-INF/MANIFEST.MF has a Plugin-Dependencies field that mentions echarts-api:5.0.1-1. https://updates.jenkins.io/download/plugins/echarts-api/5.0.1-1/echarts-api.hpi contains WEB-INF/lib/echarts-build-trends-2.0.0.jar, which contains edu/hm/hafner/echarts/JacksonFacade.class (which was apparently compiled from https://github.com/uhafner/echarts-build-trends/blob/7c8917f9c186426f153bc5fdcb72896dcdcff714/src/main/java/edu/hm/hafner/echarts/JacksonFacade.java). Why does Jenkins not use that, then?

          Kalle Niemitalo added a comment - In https://updates.jenkins.io/download/plugins/warnings-ng/8.10.1/warnings-ng.hpi , META-INF/MANIFEST.MF has a Plugin-Dependencies field that mentions echarts-api:5.0.1-1. https://updates.jenkins.io/download/plugins/echarts-api/5.0.1-1/echarts-api.hpi contains WEB-INF/lib/echarts-build-trends-2.0.0.jar, which contains edu/hm/hafner/echarts/JacksonFacade.class (which was apparently compiled from https://github.com/uhafner/echarts-build-trends/blob/7c8917f9c186426f153bc5fdcb72896dcdcff714/src/main/java/edu/hm/hafner/echarts/JacksonFacade.java ). Why does Jenkins not use that, then?

          Kalle Niemitalo added a comment - - edited

          I upgraded the Jira plugin from 3.2 to 3.2.1 and restarted Jenkins, and now the warnings trend chart is working again. I don't see how the Jira plugin could have caused the problem, though; it doesn't seem to have any dependency on echarts.

          I'll resolve this as unreproduceable, and reopen later if the problem recurs.

          Kalle Niemitalo added a comment - - edited I upgraded the Jira plugin from 3.2 to 3.2.1 and restarted Jenkins, and now the warnings trend chart is working again. I don't see how the Jira plugin could have caused the problem, though; it doesn't seem to have any dependency on echarts. I'll resolve this as unreproduceable, and reopen later if the problem recurs.

          Now I'm getting a similar NoClassDefFoundError for a different class, edu.hm.hafner.echarts.LineSeries:

          huhtikuuta 01, 2021 4:46:54 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall
          
          call to /jenkins/$stapler/bound/02a838ae-0264-490f-9e71-f8b83da48722/getBuildTrendModel failed
          java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createSeries(SeverityTrendChart.java:70)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createChartFromDataSet(SeverityTrendChart.java:60)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.create(SeverityTrendChart.java:29)
          	at io.jenkins.plugins.analysis.core.model.JobAction.createChartModel(JobAction.java:192)
          	at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184)
          	at java.lang.invoke.VirtualHandle.invokeExact_thunkArchetype_L(VirtualHandle.java:130)
          	at java.lang.invoke.AsTypeHandle.invokeExact_thunkArchetype_X(AsTypeHandle.java:49)
          	at java.lang.invoke.InvokeGenericHandle.invokeExact_thunkArchetype_X(InvokeGenericHandle.java:88)
          	at java.lang.invoke.SpreadHandle.invokeExact_thunkArchetype_X(SpreadHandle.java:100)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:485)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
          	at org.kohsuke.stapler.Stapler.service(Stapler.java:201)
          	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
          	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
          	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
          	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92)
          	at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
          	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109)
          	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
          	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
          	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
          	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
          	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
          	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.Server.handle(Server.java:516)
          	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
          	at org.eclipse.jetty.server.HttpChannel$$Lambda$96/000000000000000000.dispatch(Unknown Source)
          	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
          	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
          	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279)
          	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
          	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
          	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
          	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
          	at java.lang.Thread.run(Thread.java:823)
          

          Script Console however recognizes edu.hm.hafner.echarts.LineSeries just fine.

          Kalle Niemitalo added a comment - Now I'm getting a similar NoClassDefFoundError for a different class, edu.hm.hafner.echarts.LineSeries: huhtikuuta 01, 2021 4:46:54 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall call to /jenkins/$stapler/bound/02a838ae-0264-490f-9e71-f8b83da48722/getBuildTrendModel failed java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createSeries(SeverityTrendChart.java:70) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createChartFromDataSet(SeverityTrendChart.java:60) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.create(SeverityTrendChart.java:29) at io.jenkins.plugins.analysis.core.model.JobAction.createChartModel(JobAction.java:192) at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) at java.lang.invoke.VirtualHandle.invokeExact_thunkArchetype_L(VirtualHandle.java:130) at java.lang.invoke.AsTypeHandle.invokeExact_thunkArchetype_X(AsTypeHandle.java:49) at java.lang.invoke.InvokeGenericHandle.invokeExact_thunkArchetype_X(InvokeGenericHandle.java:88) at java.lang.invoke.SpreadHandle.invokeExact_thunkArchetype_X(SpreadHandle.java:100) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:485) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694) at org.kohsuke.stapler.Stapler.service(Stapler.java:201) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92) at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) at org.eclipse.jetty.server.HttpChannel$$Lambda$96/000000000000000000.dispatch(Unknown Source) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) at java.lang.Thread.run(Thread.java:823) Script Console however recognizes edu.hm.hafner.echarts.LineSeries just fine.

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader() in Script Console:

          Result: AntClassLoader[C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\accessors-smart-1.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\antlr4-runtime-4.7.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\asm-5.0.4.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\cglib-2.2.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-beanutils-1.9.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-digester3-3.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-api-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\gson-2.8.5.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\j2html-1.4.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jcommander-1.48.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\json-smart-2.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jsoup-1.13.1.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-core-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-java-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\warnings-ng.jar]
          

          This list of jar files does not include "echarts-build-trends-2.0.0.jar", nor anything else from "C:\Program Files (x86)\Jenkins\plugins\echarts-api\WEB-INF\lib".

          Kalle Niemitalo added a comment - The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader() in Script Console: Result: AntClassLoader[C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\accessors-smart-1.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\antlr4-runtime-4.7.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\asm-5.0.4.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\cglib-2.2.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-beanutils-1.9.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-digester3-3.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-api-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\gson-2.8.5.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\j2html-1.4.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jcommander-1.48.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\json-smart-2.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jsoup-1.13.1.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-core-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-java-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\warnings-ng.jar] This list of jar files does not include "echarts-build-trends-2.0.0.jar", nor anything else from "C:\Program Files (x86)\Jenkins\plugins\echarts-api\WEB-INF\lib".

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent() in Script Console:

          Result: hudson.ClassicPluginStrategy$DependencyClassLoader@b6adfb4a
          

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent().getTransitiveDependencies() in Script Console:

          Result: [Plugin:plugin-util-api, Plugin:analysis-model-api, Plugin:font-awesome-api, Plugin:jquery3-api, Plugin:popper-api, Plugin:bootstrap4-api, Plugin:structs, Plugin:trilead-api, Plugin:workflow-step-api, Plugin:scm-api, Plugin:workflow-api, Plugin:script-security, Plugin:workflow-support, Plugin:display-url-api, Plugin:checks-api, Plugin:snakeyaml-api, Plugin:jackson2-api, Plugin:data-tables-api, Plugin:echarts-api, Plugin:workflow-scm-step, Plugin:bouncycastle-api, Plugin:command-launcher, Plugin:jdk-tool, Plugin:ace-editor, Plugin:workflow-cps, Plugin:workflow-job, Plugin:configuration-as-code, Plugin:credentials, Plugin:cloudbees-folder, Plugin:branch-api, Plugin:workflow-multibranch, Plugin:forensics-api, Plugin:antisamy-markup-formatter, Plugin:apache-httpcomponents-client-4-api, Plugin:junit, Plugin:matrix-project, Plugin:token-macro]
          

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart") in Script Console:

          Result: class io.jenkins.plugins.analysis.core.charts.SeverityTrendChart
          

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("edu.hm.hafner.echarts.LineSeries") in Script Console:

          Result: class edu.hm.hafner.echarts.LineSeries
          

          But the trend chart still does not appear, and I get more of those exceptions in the log.

          Kalle Niemitalo added a comment - The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent() in Script Console: Result: hudson.ClassicPluginStrategy$DependencyClassLoader@b6adfb4a The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent().getTransitiveDependencies() in Script Console: Result: [Plugin:plugin-util-api, Plugin:analysis-model-api, Plugin:font-awesome-api, Plugin:jquery3-api, Plugin:popper-api, Plugin:bootstrap4-api, Plugin:structs, Plugin:trilead-api, Plugin:workflow-step-api, Plugin:scm-api, Plugin:workflow-api, Plugin:script-security, Plugin:workflow-support, Plugin:display-url-api, Plugin:checks-api, Plugin:snakeyaml-api, Plugin:jackson2-api, Plugin:data-tables-api, Plugin:echarts-api, Plugin:workflow-scm-step, Plugin:bouncycastle-api, Plugin:command-launcher, Plugin:jdk-tool, Plugin:ace-editor, Plugin:workflow-cps, Plugin:workflow-job, Plugin:configuration-as-code, Plugin:credentials, Plugin:cloudbees-folder, Plugin:branch-api, Plugin:workflow-multibranch, Plugin:forensics-api, Plugin:antisamy-markup-formatter, Plugin:apache-httpcomponents-client-4-api, Plugin:junit, Plugin:matrix-project, Plugin:token-macro] The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart") in Script Console: Result: class io.jenkins.plugins.analysis.core.charts.SeverityTrendChart The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("edu.hm.hafner.echarts.LineSeries") in Script Console: Result: class edu.hm.hafner.echarts.LineSeries But the trend chart still does not appear, and I get more of those exceptions in the log.

          Ulli Hafner added a comment -

          Hmm, I never had such a problem. The echarts classes are from another plugin, those are not part of a dependency lib and not part of the class loader.

          Ulli Hafner added a comment - Hmm, I never had such a problem. The echarts classes are from another plugin, those are not part of a dependency lib and not part of the class loader.

          Kalle Niemitalo added a comment - - edited

          I wonder if this could be some kind of JVM bug or incompatibility. The Jenkins instance is on AdoptOpenJDK 8 OpenJ9 (rather than Hotspot).

          Kalle Niemitalo added a comment - - edited I wonder if this could be some kind of JVM bug or incompatibility. The Jenkins instance is on AdoptOpenJDK 8 OpenJ9 (rather than Hotspot).

          After upgrading some plugins and restarting Jenkins, I get a different exception again:

          huhtikuuta 06, 2021 6:57:31 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall
          
          call to /jenkins/$stapler/bound/3c62fd8e-88ad-4e61-9a5d-f958078929c5/getBuildTrendModel failed
          java.lang.LinkageError: edu.hm.hafner.echarts.LineSeries
          	at java.lang.ClassLoader.defineClassImpl(Native Method)
          	at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:398)
          	at java.lang.ClassLoader.defineClass(ClassLoader.java:359)
          	at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155)
          	at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:718)
          	at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326)
          	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377)
          	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342)
          	at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:107)
          	at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:637)
          	at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:953)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:898)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
          	at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1406)
          	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1085)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createSeries(SeverityTrendChart.java:70)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createChartFromDataSet(SeverityTrendChart.java:60)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.create(SeverityTrendChart.java:29)
          	at io.jenkins.plugins.analysis.core.model.JobAction.createChartModel(JobAction.java:192)
          	at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:485)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
          	at org.kohsuke.stapler.Stapler.service(Stapler.java:201)
          	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
          	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
          	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
          	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92)
          	at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
          	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109)
          	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
          	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
          	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
          	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
          	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
          	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.Server.handle(Server.java:516)
          	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
          	at org.eclipse.jetty.server.HttpChannel$$Lambda$96/000000000000000000.dispatch(Unknown Source)
          	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
          	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
          	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279)
          	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
          	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
          	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
          	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
          	at java.lang.Thread.run(Thread.java:823)
          

          Versions:

          • AdoptOpenJDK jre-8.0.275.1-openj9
          • Jenkins 2.277.1
          • Warnings Next Generation Plugin 8.10.1
          • Analysis Model API Plugin 9.8.1
          • Checks API plugin 1.7.0
          • DataTables.net API Plugin 1.10.23-3
          • ECharts API Plugin 5.0.1-1
          • Forensics API Plugin 1.0.0
          • Git Forensics Plugin 1.0.0
          • Plugin Utilities API Plugin 2.1.0
          • Jackson 2 API Plugin 2.12.1

          One suspicious thing is that eclipse-collections-9.2.0.jar and eclipse-collections-api-9.2.0.jar exist in five directories: plugins\analysis-model-api\WEB-INF\lib, plugins\echarts-api\WEB-INF\lib, plugins\git-forensics\WEB-INF\lib, plugins\warnings\WEB-INF\lib, and plugins\warnings-ng\WEB-INF\lib. All of those are identical though, and there are no eclipse-collections*.jar files with other version numbers.

          (Although the plugins\warnings directory still exists, there is no plugins\warnings.jpi file, and the plugin manager does not list Warnings as an installed plugin.)

          In Script Console, Class.forName("edu.hm.hafner.echarts.LineSeries", false, Class.forName("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart").getClassLoader()) returns class edu.hm.hafner.echarts.LineSeries, but Class.forName("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart", false, Class.forName("edu.hm.hafner.echarts.LineSeries").getClassLoader()) throws java.lang.ClassNotFoundException. I think that means I can use expressions like these to check how Jenkins resolves classes referenced by plugins.

          Kalle Niemitalo added a comment - After upgrading some plugins and restarting Jenkins, I get a different exception again: huhtikuuta 06, 2021 6:57:31 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall call to /jenkins/$stapler/bound/3c62fd8e-88ad-4e61-9a5d-f958078929c5/getBuildTrendModel failed java.lang.LinkageError: edu.hm.hafner.echarts.LineSeries at java.lang.ClassLoader.defineClassImpl(Native Method) at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:398) at java.lang.ClassLoader.defineClass(ClassLoader.java:359) at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155) at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:718) at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326) at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342) at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:107) at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:637) at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:953) at java.lang.ClassLoader.loadClass(ClassLoader.java:898) at java.lang.ClassLoader.loadClass(ClassLoader.java:881) at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1406) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1085) at java.lang.ClassLoader.loadClass(ClassLoader.java:881) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createSeries(SeverityTrendChart.java:70) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createChartFromDataSet(SeverityTrendChart.java:60) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.create(SeverityTrendChart.java:29) at io.jenkins.plugins.analysis.core.model.JobAction.createChartModel(JobAction.java:192) at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:485) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694) at org.kohsuke.stapler.Stapler.service(Stapler.java:201) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92) at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) at org.eclipse.jetty.server.HttpChannel$$Lambda$96/000000000000000000.dispatch(Unknown Source) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) at java.lang.Thread.run(Thread.java:823) Versions: AdoptOpenJDK jre-8.0.275.1-openj9 Jenkins 2.277.1 Warnings Next Generation Plugin 8.10.1 Analysis Model API Plugin 9.8.1 Checks API plugin 1.7.0 DataTables.net API Plugin 1.10.23-3 ECharts API Plugin 5.0.1-1 Forensics API Plugin 1.0.0 Git Forensics Plugin 1.0.0 Plugin Utilities API Plugin 2.1.0 Jackson 2 API Plugin 2.12.1 One suspicious thing is that eclipse-collections-9.2.0.jar and eclipse-collections-api-9.2.0.jar exist in five directories: plugins\analysis-model-api\WEB-INF\lib, plugins\echarts-api\WEB-INF\lib, plugins\git-forensics\WEB-INF\lib, plugins\warnings\WEB-INF\lib, and plugins\warnings-ng\WEB-INF\lib. All of those are identical though, and there are no eclipse-collections*.jar files with other version numbers. (Although the plugins\warnings directory still exists, there is no plugins\warnings.jpi file, and the plugin manager does not list Warnings as an installed plugin.) In Script Console, Class.forName("edu.hm.hafner.echarts.LineSeries", false, Class.forName("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart").getClassLoader()) returns class edu.hm.hafner.echarts.LineSeries, but Class.forName("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart", false, Class.forName("edu.hm.hafner.echarts.LineSeries").getClassLoader()) throws java.lang.ClassNotFoundException. I think that means I can use expressions like these to check how Jenkins resolves classes referenced by plugins.

          Funny that the log has "java.lang.LinkageError: edu.hm.hafner.echarts.LineSeries" with dots but "java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries" with slashes.

          Kalle Niemitalo added a comment - Funny that the log has "java.lang.LinkageError: edu.hm.hafner.echarts.LineSeries" with dots but "java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries" with slashes.

          Upgraded to AdoptOpenJDK jre-8.0.282.8-openj9. The warnings trend chart then rendered OK, but the test results trend chart didn't, and there was a different exception:

          huhtikuuta 06, 2021 11:22:49 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall
          
          call to /jenkins/$stapler/bound/10bffabb-1439-4232-afdb-b5b50105e6e8/getBuildTrendModel failed
          java.lang.LinkageError: A duplicate class definition for edu/hm/hafner/echarts/JacksonFacade is found
          	at java.lang.ClassLoader.defineClassImpl(Native Method)
          	at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:398)
          	at java.lang.ClassLoader.defineClass(ClassLoader.java:359)
          	at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155)
          	at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:718)
          	at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326)
          	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377)
          	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342)
          	at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:107)
          	at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:637)
          	at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:953)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:898)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
          	at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1406)
          	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1085)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
          	at hudson.tasks.test.TestResultProjectAction.getBuildTrendModel(TestResultProjectAction.java:214)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:473)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
          	at org.kohsuke.stapler.Stapler.service(Stapler.java:201)
          	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
          	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
          	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
          	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92)
          	at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
          	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109)
          	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
          	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
          	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
          	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
          	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
          	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.Server.handle(Server.java:516)
          	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
          	at org.eclipse.jetty.server.HttpChannel$$Lambda$275/0x0000000000000000.dispatch(Unknown Source)
          	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
          	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
          	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279)
          	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
          	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
          	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
          	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
          	at java.lang.Thread.run(Thread.java:823)
          

          Kalle Niemitalo added a comment - Upgraded to AdoptOpenJDK jre-8.0.282.8-openj9. The warnings trend chart then rendered OK, but the test results trend chart didn't, and there was a different exception: huhtikuuta 06, 2021 11:22:49 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall call to /jenkins/$stapler/bound/10bffabb-1439-4232-afdb-b5b50105e6e8/getBuildTrendModel failed java.lang.LinkageError: A duplicate class definition for edu/hm/hafner/echarts/JacksonFacade is found at java.lang.ClassLoader.defineClassImpl(Native Method) at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:398) at java.lang.ClassLoader.defineClass(ClassLoader.java:359) at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155) at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:718) at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326) at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342) at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:107) at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:637) at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:953) at java.lang.ClassLoader.loadClass(ClassLoader.java:898) at java.lang.ClassLoader.loadClass(ClassLoader.java:881) at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1406) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1085) at java.lang.ClassLoader.loadClass(ClassLoader.java:881) at hudson.tasks.test.TestResultProjectAction.getBuildTrendModel(TestResultProjectAction.java:214) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:473) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694) at org.kohsuke.stapler.Stapler.service(Stapler.java:201) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92) at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) at org.eclipse.jetty.server.HttpChannel$$Lambda$275/0x0000000000000000.dispatch(Unknown Source) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) at java.lang.Thread.run(Thread.java:823)

          Switched from OpenJ9 to AdoptOpenJDK jre-8.0.282.8-hotspot. The warnings trend chart again fails to load. This time, the exception shows the class loader type as well:

          huhtikuuta 06, 2021 11:35:59 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall
          
          call to /jenkins/$stapler/bound/491743c3-0b79-4a47-97c0-7cf8c11471e1/getBuildTrendModel failed
          java.lang.LinkageError: loader (instance of  hudson/ClassicPluginStrategy$AntClassLoader2): attempted  duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade"
          	at java.lang.ClassLoader.defineClass1(Native Method)
          	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
          	at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155)
          	at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:718)
          	at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326)
          	at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377)
          	at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342)
          	at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:107)
          	at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:637)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
          	at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1406)
          	at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1085)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
          	at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
          	at org.kohsuke.stapler.Stapler.service(Stapler.java:201)
          	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
          	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
          	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
          	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92)
          	at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
          	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109)
          	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
          	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
          	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
          	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
          	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
          	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.Server.handle(Server.java:516)
          	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
          	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
          	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
          	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279)
          	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
          	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
          	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
          	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
          	at java.lang.Thread.run(Thread.java:748)
          

          I can also trigger this "duplicate class definition" exception by running in the script console:

          Jenkins.get().getItemByFullName("REDACTED/master").getAction(io.jenkins.plugins.analysis.core.model.JobAction.class).getBuildTrendModel()
          

          Kalle Niemitalo added a comment - Switched from OpenJ9 to AdoptOpenJDK jre-8.0.282.8-hotspot. The warnings trend chart again fails to load. This time, the exception shows the class loader type as well: huhtikuuta 06, 2021 11:35:59 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall call to /jenkins/$stapler/bound/491743c3-0b79-4a47-97c0-7cf8c11471e1/getBuildTrendModel failed java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155) at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:718) at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326) at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342) at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:107) at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:637) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at jenkins.util.AntClassLoader.findBaseClass(AntClassLoader.java:1406) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1085) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694) at org.kohsuke.stapler.Stapler.service(Stapler.java:201) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92) at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) at java.lang.Thread.run(Thread.java:748) I can also trigger this "duplicate class definition" exception by running in the script console: Jenkins.get().getItemByFullName( "REDACTED/master" ).getAction(io.jenkins.plugins.analysis.core.model.JobAction.class).getBuildTrendModel()

          Huh, edu/hm/hafner/echarts/LineSeries.class and edu/hm/hafner/echarts/JacksonFacade.class exist in both plugins/echarts-api/WEB-INF/lib/echarts-api.jar and plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar. And those jar files are identical to what is embedded in plugins/echarts-api.jpi (ECharts API Plugin 5.0.1-1). So this seems to be a bug in that plugin then. I'll reopen and retitle.

          Kalle Niemitalo added a comment - Huh, edu/hm/hafner/echarts/LineSeries.class and edu/hm/hafner/echarts/JacksonFacade.class exist in both plugins/echarts-api/WEB-INF/lib/echarts-api.jar and plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar. And those jar files are identical to what is embedded in plugins/echarts-api.jpi (ECharts API Plugin 5.0.1-1). So this seems to be a bug in that plugin then. I'll reopen and retitle.

          Downgraded Warnings Next Generation to 8.10.0 and ECharts API to 4.9.0-4. Now both trend charts (warnings and tests) render OK, and there are no exceptions in the log.

          Kalle Niemitalo added a comment - Downgraded Warnings Next Generation to 8.10.0 and ECharts API to 4.9.0-4. Now both trend charts (warnings and tests) render OK, and there are no exceptions in the log.

          Ulli Hafner added a comment -

          Thanks for spotting. This error (forgotten <scope>provided</scope>) is existing since the beginning of the plugin... Maybe sometimes it works.

          Ulli Hafner added a comment - Thanks for spotting. This error (forgotten <scope>provided</scope>) is existing since the beginning of the plugin... Maybe sometimes it works.

          Kalle Niemitalo added a comment - - edited

          I imagine it could be a race condition that depends on the timing of HTTP requests after Jenkins is restarted.

          If your PR #115 fixes the chart rendering problems, then I should perhaps file a few feature requests in core to make similar problems easier to understand in the future:

          • If a java.lang.LinkageError is thrown from a class loader, then log more details about the error: the names of the plugins and jar files that the class loaders are using, and if a class with the same name has already been loaded, then also the plugin and jar in which that one was defined.
            (Too bad that Java 8 does not support named class loaders.)
          • When a plugin is being built, check for duplicate classes in the jar files that will be be packaged in the same jpi file.

          Kalle Niemitalo added a comment - - edited I imagine it could be a race condition that depends on the timing of HTTP requests after Jenkins is restarted. If your PR #115 fixes the chart rendering problems, then I should perhaps file a few feature requests in core to make similar problems easier to understand in the future: If a java.lang.LinkageError is thrown from a class loader, then log more details about the error: the names of the plugins and jar files that the class loaders are using, and if a class with the same name has already been loaded, then also the plugin and jar in which that one was defined. (Too bad that Java 8 does not support named class loaders .) When a plugin is being built, check for duplicate classes in the jar files that will be be packaged in the same jpi file.

          Ivan Kurnosov added a comment - - edited

          I just experienced the same

          Apr 15, 2021 8:53:52 AM WARNING hudson.init.impl.InstallUncaughtExceptionHandler handleException
          Caught unhandled exception with ID 57982552-824d-4e12-a402-b7dff9d949ae
          java.lang.LinkageError: loader (instance of  hudson/ClassicPluginStrategy$AntClassLoader2): attempted  duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade"
          	at hudson.tasks.test.TestResultProjectAction.getBuildTrendModel(TestResultProjectAction.java:214)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          Caused: javax.servlet.ServletException
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:816)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
          	at org.kohsuke.stapler.Stapler.service(Stapler.java:201)
          	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
          	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
          	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
          	at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:248)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:60)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92)
          	at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
          	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109)
          	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
          	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
          	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
          	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
          	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
          	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.Server.handle(Server.java:516)
          	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
          	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
          	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
          	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279)
          	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
          	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
          	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
          	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
          	at java.lang.Thread.run(Thread.java:748)
          

          All installed plugins are of the current latest version, including `ECharts API Plugin 5.0.2-1`

          In the UI it's triggered by rendering the trends chart which shows the xunit chart.

          Ivan Kurnosov added a comment - - edited I just experienced the same Apr 15, 2021 8:53:52 AM WARNING hudson.init.impl.InstallUncaughtExceptionHandler handleException Caught unhandled exception with ID 57982552-824d-4e12-a402-b7dff9d949ae java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade" at hudson.tasks.test.TestResultProjectAction.getBuildTrendModel(TestResultProjectAction.java:214) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) Caused: javax.servlet.ServletException at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:816) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694) at org.kohsuke.stapler.Stapler.service(Stapler.java:201) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:248) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:60) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92) at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) at java.lang.Thread.run(Thread.java:748) All installed plugins are of the current latest version, including `ECharts API Plugin 5.0.2-1` In the UI it's triggered by rendering the trends chart which shows the xunit chart.

          zerkms, what files do you have in the "plugins/echarts-api/WEB-INF/lib" directory in the Jenkins controller? I see these with echarts-api 5.0.2-1:

          $ sha256sum *
          6173bfee124364d356a3f1c7d49f6acc25883a6fb9a5ccddd83ef8c0b7c2c7a5 *echarts-api.jar
          e9a6e0c786435142274cd319c285b634e8b7492e2ad0ef2ea30802f440d8dbb7 *eclipse-collections-9.2.0.jar
          51b8d355c6a158286af8e326709cacebea881f51670cb9be99495ab4715dfac3 *eclipse-collections-api-9.2.0.jar
          

          i.e. echarts-build-trends-2.0.0.jar is no longer included. Perhaps you have a stray file there for some reason.

          Also, did you restart Jenkins after you upgraded the echarts-api plugin? Perhaps the classes loaded from the previously installed version are still in memory.

          Kalle Niemitalo added a comment - zerkms , what files do you have in the "plugins/echarts-api/WEB-INF/lib" directory in the Jenkins controller? I see these with echarts-api 5.0.2-1: $ sha256sum * 6173bfee124364d356a3f1c7d49f6acc25883a6fb9a5ccddd83ef8c0b7c2c7a5 *echarts-api.jar e9a6e0c786435142274cd319c285b634e8b7492e2ad0ef2ea30802f440d8dbb7 *eclipse-collections-9.2.0.jar 51b8d355c6a158286af8e326709cacebea881f51670cb9be99495ab4715dfac3 *eclipse-collections-api-9.2.0.jar i.e. echarts-build-trends-2.0.0.jar is no longer included. Perhaps you have a stray file there for some reason. Also, did you restart Jenkins after you upgraded the echarts-api plugin? Perhaps the classes loaded from the previously installed version are still in memory.

          Ivan Kurnosov added a comment -

          I have the same files

          jenkins@jenkins-59f6b58798-z4r8z:~/plugins/echarts-api/WEB-INF/lib$ ls -la
          total 11036
          drwxrwsr-x 2 jenkins jenkins     4096 Apr  8 06:56 .
          drwxrwsr-x 3 jenkins jenkins     4096 Apr  8 06:56 ..
          -rw-rw-r-- 1 jenkins jenkins    35954 Apr  7 14:25 echarts-api.jar
          -rw-rw-r-- 1 jenkins jenkins 10019815 Dec  5  2018 eclipse-collections-9.2.0.jar
          -rw-rw-r-- 1 jenkins jenkins  1231986 Dec  5  2018 eclipse-collections-api-9.2.0.jar
          
          

          But it looks like you were right: this instance runs in kubernetes, and after plugins are updated - it performs the "restart" but apparently it's some sort of "soft" restart (not sure about the proper terminology), when the main jenkins process does not fully unload from memory, but instead simply reinitialises its resources.

          Nevertheless, fully shutting down and restarting a jenkins process (effectively - killing the pod) helped, thanks a lot!

          Ivan Kurnosov added a comment - I have the same files jenkins@jenkins-59f6b58798-z4r8z:~/plugins/echarts-api/WEB-INF/lib$ ls -la total 11036 drwxrwsr-x 2 jenkins jenkins 4096 Apr 8 06:56 . drwxrwsr-x 3 jenkins jenkins 4096 Apr 8 06:56 .. -rw-rw-r-- 1 jenkins jenkins 35954 Apr 7 14:25 echarts-api.jar -rw-rw-r-- 1 jenkins jenkins 10019815 Dec 5 2018 eclipse-collections-9.2.0.jar -rw-rw-r-- 1 jenkins jenkins 1231986 Dec 5 2018 eclipse-collections-api-9.2.0.jar But it looks like you were right: this instance runs in kubernetes, and after plugins are updated - it performs the "restart" but apparently it's some sort of "soft" restart (not sure about the proper terminology), when the main jenkins process does not fully unload from memory, but instead simply reinitialises its resources. Nevertheless, fully shutting down and restarting a jenkins process (effectively - killing the pod) helped, thanks a lot!

          Ivan Kurnosov added a comment - - edited

          Okay, it's back. So it looks like it's a race condition somewhere indeed.

          ```
          Caught unhandled exception with ID 8d917e05-24b4-42aa-97ee-78ead60cb474
          java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade"
          ```

          Nothing was upgraded, just the jenkins was restarted (the host machine needed to be shut down temporarily).

          PS: and in last comment I copied the wrong command line output, my hashes matched.

          Ivan Kurnosov added a comment - - edited Okay, it's back. So it looks like it's a race condition somewhere indeed. ``` Caught unhandled exception with ID 8d917e05-24b4-42aa-97ee-78ead60cb474 java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade" ``` Nothing was upgraded, just the jenkins was restarted (the host machine needed to be shut down temporarily). PS: and in last comment I copied the wrong command line output, my hashes matched.

          Ulli Hafner added a comment -

          Hmm, this class is just available once (since the release https://github.com/jenkinsci/echarts-api-plugin/releases/tag/v5.0.2-1).

          Ulli Hafner added a comment - Hmm, this class is just available once (since the release https://github.com/jenkinsci/echarts-api-plugin/releases/tag/v5.0.2-1 ).

          Might be a race condition in the Jenkins core instead, although then I'd expect the same error to occur with other classes as well.

          zerkms, which JVM are you using?

          Kalle Niemitalo added a comment - Might be a race condition in the Jenkins core instead, although then I'd expect the same error to occur with other classes as well. zerkms , which JVM are you using?

          Ivan Kurnosov added a comment -

          I'm using the official `jenkins/jenkins:2.277.3` docker image (lts), which is

          ```
          $ java -version
          openjdk version "1.8.0_282"
          OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_282-b08)
          OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.282-b08, mixed mode)
          ```

          Ivan Kurnosov added a comment - I'm using the official `jenkins/jenkins:2.277.3` docker image (lts), which is ``` $ java -version openjdk version "1.8.0_282" OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_282-b08) OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.282-b08, mixed mode) ```

          Kalle Niemitalo added a comment - - edited

          I upgraded to Jenkins 2.277.4 and the latest plugins, and now I get the error again.

          toukokuuta 06, 2021 12:55:26 IP. WARNING hudson.init.impl.InstallUncaughtExceptionHandler handleException
          
          Caught unhandled exception with ID 5362ae1b-cdfb-4a4d-90be-1569d749adb1
          java.lang.LinkageError: loader (instance of  hudson/ClassicPluginStrategy$AntClassLoader2): attempted  duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade"
          	at hudson.tasks.test.TestResultProjectAction.getBuildTrendModel(TestResultProjectAction.java:214)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          

          However, "grep -l -r JacksonFacade plugins" on the Jenkins controller finds only:

          • plugins/echarts-api/WEB-INF/lib/echarts-api.jar

          i.e. the class is not defined in more than one JAR file. I think I'll file a separate bug on Jenkins core, then.

          Kalle Niemitalo added a comment - - edited I upgraded to Jenkins 2.277.4 and the latest plugins, and now I get the error again. toukokuuta 06, 2021 12:55:26 IP. WARNING hudson.init.impl.InstallUncaughtExceptionHandler handleException Caught unhandled exception with ID 5362ae1b-cdfb-4a4d-90be-1569d749adb1 java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade" at hudson.tasks.test.TestResultProjectAction.getBuildTrendModel(TestResultProjectAction.java:214) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) However, "grep -l -r JacksonFacade plugins" on the Jenkins controller finds only: plugins/echarts-api/WEB-INF/lib/echarts-api.jar i.e. the class is not defined in more than one JAR file. I think I'll file a separate bug on Jenkins core, then.

          Oh, there are already two open issues with "duplicate class definition":

          • JENKINS-64864 attempted duplicate class definition for name: "org/apache/commons/lang3/StringUtils"
          • JENKINS-65510 attempted duplicate class definition for name: "com/cloudbees/plugins/credentials/CredentialsMatcher$CQL"

          and three that I think are not related, because they involve CpsGroovyShell$CleanGroovyClassLoader rather than ClassicPluginStrategy$AntClassLoader2:

          • JENKINS-52907 attempted duplicate class definition for name: "lib/lib"
          • JENKINS-48628 attempted duplicate class definition for name: "com/example/jenkins/testcase/function"
          • JENKINS-49122 attempted duplicate class definition for name: "Github"

          Kalle Niemitalo added a comment - Oh, there are already two open issues with "duplicate class definition": JENKINS-64864 attempted duplicate class definition for name: "org/apache/commons/lang3/StringUtils" JENKINS-65510 attempted duplicate class definition for name: "com/cloudbees/plugins/credentials/CredentialsMatcher$CQL" and three that I think are not related, because they involve CpsGroovyShell$CleanGroovyClassLoader rather than ClassicPluginStrategy$AntClassLoader2: JENKINS-52907 attempted duplicate class definition for name: "lib/lib" JENKINS-48628 attempted duplicate class definition for name: "com/example/jenkins/testcase/function" JENKINS-49122 attempted duplicate class definition for name: "Github"

          I restarted Jenkins and first navigated to a project that collects warnings but does not run any tests, and thus has only one graph. That loaded OK. I then navigated to a project that has graphs for warnings and test results, and both graphs loaded OK. I think this sequence of requests avoided the race condition.

          Kalle Niemitalo added a comment - I restarted Jenkins and first navigated to a project that collects warnings but does not run any tests, and thus has only one graph. That loaded OK. I then navigated to a project that has graphs for warnings and test results, and both graphs loaded OK. I think this sequence of requests avoided the race condition.

          Ulli Hafner added a comment -

          I think it would make sense to report it in a way that the core team will see it. Otherwise plugin developers (like me) simply will do nothing because the error looks to be caused by something unrelated.

          Ulli Hafner added a comment - I think it would make sense to report it in a way that the core team will see it. Otherwise plugin developers (like me) simply will do nothing because the error looks to be caused by something unrelated.

          JENKINS-65766 was fixed in core. I hope "duplicate class definition" will no longer occur, then.

          Kalle Niemitalo added a comment - JENKINS-65766 was fixed in core. I hope "duplicate class definition" will no longer occur, then.

            drulli Ulli Hafner
            kon Kalle Niemitalo
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: