jenkinsci / code-coverage-api-plugin

Deprecated Jenkins Code Coverage Plugin
https://plugins.jenkins.io/code-coverage-api/
MIT License
112 stars 75 forks source link

`NullPointerException` in `CoverageStatistics.asValueMap(CoverageStatistics.java:61)` #647

Closed viceice closed 1 year ago

viceice commented 1 year ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.387.2 OS: Linux - 5.15.0-1034-azure Java: 11.0.18 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- Office-365-Connector:4.18.0 additional-identities-plugin:1.1 analysis-model-api:11.1.0 ansicolor:1.0.2 antisamy-markup-formatter:159.v25b_c67cd35fb_ apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5 authentication-tokens:1.53.v1c90fd9191a_b_ authorize-project:1.5.1 aws-credentials:191.vcb_f183ce58b_9 aws-java-sdk:1.12.447-382.vda_68e2007233 aws-java-sdk-cloudformation:1.12.447-382.vda_68e2007233 aws-java-sdk-codebuild:1.12.447-382.vda_68e2007233 aws-java-sdk-ec2:1.12.447-382.vda_68e2007233 aws-java-sdk-ecr:1.12.447-382.vda_68e2007233 aws-java-sdk-ecs:1.12.447-382.vda_68e2007233 aws-java-sdk-efs:1.12.447-382.vda_68e2007233 aws-java-sdk-elasticbeanstalk:1.12.447-382.vda_68e2007233 aws-java-sdk-iam:1.12.447-382.vda_68e2007233 aws-java-sdk-kinesis:1.12.447-382.vda_68e2007233 aws-java-sdk-logs:1.12.447-382.vda_68e2007233 aws-java-sdk-minimal:1.12.447-382.vda_68e2007233 aws-java-sdk-sns:1.12.447-382.vda_68e2007233 aws-java-sdk-sqs:1.12.447-382.vda_68e2007233 aws-java-sdk-ssm:1.12.447-382.vda_68e2007233 basic-branch-build-strategies:71.vc1421f89888e blueocean-autofavorite:1.2.5 blueocean-commons:1.27.3 blueocean-config:1.27.3 blueocean-core-js:1.27.3 blueocean-dashboard:1.27.3 blueocean-display-url:2.4.1 blueocean-events:1.27.3 blueocean-git-pipeline:1.27.3 blueocean-github-pipeline:1.27.3 blueocean-i18n:1.27.3 blueocean-jwt:1.27.3 blueocean-personalization:1.27.3 blueocean-pipeline-api-impl:1.27.3 blueocean-pipeline-editor:1.27.3 blueocean-pipeline-scm-api:1.27.3 blueocean-rest:1.27.3 blueocean-rest-impl:1.27.3 blueocean-web:1.27.3 bootstrap4-api:4.6.0-5 bootstrap5-api:5.2.2-2 bouncycastle-api:2.27 branch-api:2.1071.v1a_188a_562481 build-token-root:151.va_e52fe3215fc caffeine-api:2.9.3-65.v6a_47d0f4d1fe checks-api:2.0.0 cloudbees-folder:6.815.v0dd5a_cb_40e0e code-coverage-api:4.3.0 command-launcher:90.v669d7ccb_7c31 commons-httpclient3-api:3.1-3 commons-lang3-api:3.12.0-36.vd97de6465d5b_ commons-text-api:1.10.0-36.vc008c8fcda_7b_ config-file-provider:3.11.1 credentials:1224.vc23ca_a_9a_2cb_0 credentials-binding:604.vb_64480b_c56ca_ data-tables-api:1.13.3-3 display-url-api:2.3.7 docker-commons:419.v8e3cd84ef49c docker-java-api:3.2.13-68.va_875df25a_b_45 docker-plugin:1.3.0 docker-workflow:563.vd5d2e5c4007f durable-task:504.vb10d1ae5ba2f echarts-api:5.4.0-3 email-ext:2.96 embeddable-build-status:369.vb_a_68a_575a_b_11 external-monitor-job:203.v683c09d993b_9 favorite:2.4.1 font-awesome-api:6.3.0-2 forensics-api:2.1.0 git:5.0.0 git-client:4.2.0 git-forensics:2.0.0 git-parameter:0.9.18 gitea:1.4.5 gitea-checks:449.v0672c320ee47 github:1.37.0 github-api:1.303-417.ve35d9dd78549 github-branch-source:1703.vd5a_2b_29c6cdc google-oauth-plugin:1.0.8 gravatar:2.2 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 htmlpublisher:1.31 instance-identity:142.v04572ca_5b_265 ionicons-api:45.vf54fca_5d2154 jackson2-api:2.14.2-319.v37853346a_229 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.8-1 jdk-tool:63.v62d2fd4b_4793 jenkins-design-language:1.27.3 jjwt-api:0.11.5-77.v646c772fddb_0 jobcacher:378.v5e7c64638d63 jquery:1.12.4-1 jquery3-api:3.6.4-1 jsch:0.1.55.61.va_e9ee26616e7 junit:1189.v1b_e593637fa_e kubernetes:3923.v294a_d4250b_91 kubernetes-client-api:6.4.1-215.v2ed17097a_8e9 kubernetes-credentials:0.10.0 ldap:671.v2a_9192a_7419d lockable-resources:1141.v7c5f8f31d2ee mailer:448.v5b_97805e3767 matrix-auth:3.1.6 matrix-project:785.v06b_7f47b_c631 metrics:4.2.13-420.vea_2f17932dd6 mina-sshd-api-common:2.9.2-62.v199162f0a_2f8 mina-sshd-api-core:2.9.2-62.v199162f0a_2f8 nunit:0.28 oauth-credentials:0.5 okhttp-api:4.10.0-132.v7a_7b_91cef39c pipeline-build-step:488.v8993df156e8d pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:656.va_a_ceeb_6ffb_f7 pipeline-input-step:466.v6d0a_5df34f81 pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2125.vddb_a_44a_d605e pipeline-model-definition:2.2125.vddb_a_44a_d605e pipeline-model-extensions:2.2125.vddb_a_44a_d605e pipeline-multibranch-defaults:2.1 pipeline-rest-api:2.32 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2125.vddb_a_44a_d605e pipeline-stage-view:2.32 pipeline-utility-steps:2.15.1 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.2.0 popper-api:1.16.1-3 popper2-api:2.11.6-2 prism-api:1.29.0-4 pubsub-light:1.17 saml:4.385.v4dea_91565e9d scm-api:631.v9143df5b_e4a_a scoring-load-balancer:59.vf791549fa_989 script-security:1244.ve463715a_f89c sidebar-link:2.2.1 simple-theme-plugin:146.v0e67db_a_9052e snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4 sse-gateway:1.26 ssh-agent:327.v230ecd01f86f ssh-credentials:305.v8f4381501156 ssh-slaves:2.877.v365f5eb_a_b_eec sshd:3.275.v9e17c10f2571 structs:324.va_f5d6774f3a_d timestamper:1.24 token-macro:321.vd7cc1f2a_52c8 trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb versioncolumn:145.va_e3ca_f8a_a_d23 warnings-ng:10.1.0 workflow-aggregator:596.v8c21c963d92d workflow-api:1208.v0cc7c6e0da_9e workflow-basic-steps:1010.vf7a_b_98e847c1 workflow-cps:3653.v07ea_433c90b_4 workflow-durable-task-step:1244.vee71f675dee6 workflow-job:1289.vd1c337fd5354 workflow-multibranch:733.v109046189126 workflow-scm-step:408.v7d5b_135a_b_d49 workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:839.v35e2736cfd5c ```

What Operating System are you using (both controller, and any agents involved in the problem)?

linux

Reproduction steps

open the coverage report on a finished build

Expected Results

it should show the Coverage trend

Actual Results

getting a 500 error

WARNING o.e.j.s.h.ContextHandler$Context#log: Error while serving https://ci.jenkins.test/$stapler/bound/8d5ead0d-edda-4d22-9e4f-acc079704348/getTrendChart
java.lang.NullPointerException
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:61)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:29)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createSeriesPerBuild(SeriesBuilder.java:96)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createDataSet(SeriesBuilder.java:82)
    at io.jenkins.plugins.coverage.metrics.charts.CoverageTrendChart.create(CoverageTrendChart.java:40)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.createChartModel(CoverageBuildAction.java:594)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageViewModel.getTrendChart(CoverageViewModel.java:225)
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)

Anything else?

No response

viceice commented 1 year ago

https://github.com/jenkinsci/code-coverage-api-plugin/blob/63327b496d9344a68a037ee2a364b28a3328a962/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/model/CoverageStatistics.java#L61

it seems projectDelta is null

viceice commented 1 year ago

https://github.com/jenkinsci/code-coverage-api-plugin/blob/63327b496d9344a68a037ee2a364b28a3328a962/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/model/CoverageStatistics.java#L57

probably the fileDelta here

uhafner commented 1 year ago

The only way that we get null are the parameters of the method. And these are all non-null by definition. That means they are deserialized from disk to null due to an error.

Is this a longer build history? Maybe some old builds did not get serialized correctly because one of the exceptions in the previous version? Or are all those builds from the latest version? Can you restrict the number of shown trend chart builds using the setup dialog?

Does this problem occur on a new job with a series of builds that use the latest coverage-plugin version?

viceice commented 1 year ago

it occurred on an old history. probably related to my previous reported issues 🙈

how can I configure the history, I'm using multi branch pipelines only for Gitea

uhafner commented 1 year ago

The problem is, that the configuration button is in the chart. But this chart is not visible due to the exception, isn't it?

Does the same problem also appear on the project page? There is also a trend chart... On this page you can use the configure button of any of the other charts to set the number of builds to consider.

viceice commented 1 year ago

that chart also shows the loading indicator and never completes

viceice commented 1 year ago

Seeing this on branch pipeline image

Also seen this exception

2023-04-25 11:16:07.773+0000 [id=22365] WARNING h.i.i.InstallUncaughtExceptionHandler#handleException: Caught unhandled exception with ID 0c788605-1b93-4311-ac2d-fbc7ec2e9256
java.lang.ClassCastException: class org.apache.commons.lang3.math.Fraction cannot be cast to class org.apache.commons.lang3.math.Fraction (org.apache.commons.lang3.math.Fraction is in unnamed module of loader jenkins.util.URLClassLoader2 @246903eb; org.apache.commons.lang3.math.Fraction is in unnamed module of loader jenkins.util.URLClassLoader2 @6d3d8c68)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.lambda$asValueMap$0(CoverageStatistics.java:62)
    at java.base/java.util.stream.Collectors.lambda$toMap$68(Unknown Source)
    at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(Unknown Source)
    at java.base/java.util.TreeMap$EntrySpliterator.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:61)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:29)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createSeriesPerBuild(SeriesBuilder.java:96)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createDataSet(SeriesBuilder.java:82)
    at io.jenkins.plugins.coverage.metrics.charts.CoverageTrendChart.create(CoverageTrendChart.java:40)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageJobAction.createChartModel(CoverageJobAction.java:80)
    at io.jenkins.plugins.echarts.TrendChartJobAction.getConfigurableBuildTrendModel(TrendChartJobAction.java:54)
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:397)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:409)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:207)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:140)
    at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:661)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:59)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:770)
viceice commented 1 year ago

And this

2023-04-25 11:19:08.077+0000 [id=19016] WARNING o.e.j.s.h.ContextHandler$Context#log: Error while serving https://ci.visualon.de/$stapler/bound/065bd5a2-126f-4357-a7ca-b8d1f1d9671d/getConfigurableBuildTrendModel
java.lang.ClassCastException: class org.apache.commons.lang3.math.Fraction cannot be cast to class org.apache.commons.lang3.math.Fraction (org.apache.commons.lang3.math.Fraction is in unnamed module of loader jenkins.util.URLClassLoader2 @246903eb; org.apache.commons.lang3.math.Fraction is in unnamed module of loader jenkins.util.URLClassLoader2 @6d3d8c68)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.lambda$asValueMap$0(CoverageStatistics.java:62)
    at java.base/java.util.stream.Collectors.lambda$toMap$68(Unknown Source)
    at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(Unknown Source)
    at java.base/java.util.TreeMap$EntrySpliterator.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:61)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:29)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createSeriesPerBuild(SeriesBuilder.java:96)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createDataSet(SeriesBuilder.java:82)
    at io.jenkins.plugins.coverage.metrics.charts.CoverageTrendChart.create(CoverageTrendChart.java:40)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageJobAction.createChartModel(CoverageJobAction.java:80)
    at io.jenkins.plugins.echarts.TrendChartJobAction.getConfigurableBuildTrendModel(TrendChartJobAction.java:54)
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:397)
uhafner commented 1 year ago

This seems to be a new problem and not related to old serializations. I am using https://plugins.jenkins.io/commons-lang3-api/ as a dependency. It seems that one of the other plugins that shows results on the project page contains a copy of commons-lang3 in the build path. Your plugin list is really long so I do not see which of the other plugins might cause this problem. I'm not sure how we can find such plugins.

viceice commented 1 year ago

ok, found this:

jenkins-root/plugins> find . -name '*commons-lang3*'
./jenkins-jira-plugin/WEB-INF/lib/commons-lang3-3.6.jar
./jira/WEB-INF/lib/commons-lang3-3.11.jar
./maven-plugin/WEB-INF/lib/commons-lang3-3.10.jar
./commons-lang3-api
./commons-lang3-api/META-INF/maven/io.jenkins.plugins/commons-lang3-api
./commons-lang3-api/WEB-INF/lib/commons-lang3-api.jar
./commons-lang3-api/WEB-INF/lib/commons-lang3-3.12.0.jar
./commons-lang3-api.jpi
./extended-choice-parameter/WEB-INF/lib/commons-lang3-3.8.1.jar
./blueocean-commons/WEB-INF/lib/commons-lang3-3.12.0.jar
viceice commented 1 year ago

deleted the jira stuff, no longer used and jenkins says not installed

viceice commented 1 year ago

so can be one of these:

extended-choice-parameter is also uninstalled, so now deleted

viceice commented 1 year ago

sending upstream fixes

viceice commented 1 year ago

any workaround to fix without require manual plugin updates to snapshots?

uhafner commented 1 year ago

I don't think so :-(

viceice commented 1 year ago

maven-plugin fixed and released, need to wait for publish to jenkins 🙃

viceice commented 1 year ago

I've managed to resolve the lang3 dependency issue (removed blue ocean), but the NullPointerException is still thrown 😕

uhafner commented 1 year ago

Hmm, that means find . -name '*commons-lang3*' is empty for all other plugins?

viceice commented 1 year ago

yes, now only seeing multiple times the null pointer

2023-05-03 12:14:40.987+0000 [id=2180]  WARNING h.ExpressionFactory2$JexlExpression#evaluate: Caught exception evaluating: it.getCoverageText(job) in /job/xxx/job/yyy/job/zzz/. Reason: java.lang.NullPointerException
java.lang.NullPointerException
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageMetricColumn.lambda$getCoverageValue$1(CoverageMetricColumn.java:165)
    at java.base/java.util.Optional.flatMap(Unknown Source)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageMetricColumn.getCoverageValue(CoverageMetricColumn.java:165)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageMetricColumn.getCoverageText(CoverageMetricColumn.java:149)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)

...

2023-05-03 12:14:46.600+0000 [id=2173]  WARNING o.k.s.HttpResponseRenderer$Default#handleJavaScriptProxyMethodCall: call to /$stapler/bound/7df49f46-c303-43f6-a6fb-9026e95ef2d9/getConfigurableBuildTrendModel failed
java.lang.NullPointerException
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:61)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:29)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createSeriesPerBuild(SeriesBuilder.java:96)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createDataSet(SeriesBuilder.java:82)
    at io.jenkins.plugins.coverage.metrics.charts.CoverageTrendChart.create(CoverageTrendChart.java:40)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageJobAction.createChartModel(CoverageJobAction.java:80)
    at io.jenkins.plugins.echarts.TrendChartJobAction.getConfigurableBuildTrendModel(TrendChartJobAction.java:54)
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)

...

2023-05-03 12:21:23.720+0000 [id=2245]  WARNING h.i.i.InstallUncaughtExceptionHandler#handleException: Caught unhandled exception with ID db8e1eaf-6a85-4f80-8dca-20cca8aa6802
java.lang.NullPointerException
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:61)
    at io.jenkins.plugins.echarts.GenericBuildActionIterator.next(GenericBuildActionIterator.java:29)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createSeriesPerBuild(SeriesBuilder.java:96)
    at edu.hm.hafner.echarts.line.SeriesBuilder.createDataSet(SeriesBuilder.java:82)
    at io.jenkins.plugins.coverage.metrics.charts.CoverageTrendChart.create(CoverageTrendChart.java:40)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageJobAction.createChartModel(CoverageJobAction.java:80)
    at io.jenkins.plugins.echarts.TrendChartJobAction.getConfigurableBuildTrendModel(TrendChartJobAction.java:54)
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:397)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:409)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:207)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:140)
    at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:661)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:59)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:770)
viceice commented 1 year ago

Can you add some debug code, so i can send more detailed debug logs?

what about to catch that exception at a level, so we can see in logs which build / file is causing the error?

viceice commented 1 year ago

Interesting, it's working on one project. But the two colors have too less contrast. image

viceice commented 1 year ago

The difference is that the non working project uses relative paths inside the cobertura report and the working project uses absolute paths.

uhafner commented 1 year ago

Do both projects have results of a previous serialization of an older version? Just to be sure that this is not a problem? Or does the problem occur with new projects and builds as well?

uhafner commented 1 year ago

And please note:

2023-04-25 11:19:08.077+0000 [id=19016] WARNING o.e.j.s.h.ContextHandler$Context#log: Error while serving https://ci.visualon.de/$stapler/bound/065bd5a2-126f-4357-a7ca-b8d1f1d9671d/getConfigurableBuildTrendModel
java.lang.ClassCastException: class org.apache.commons.lang3.math.Fraction cannot be cast to class org.apache.commons.lang3.math.Fraction (org.apache.commons.lang3.math.Fraction is in unnamed module of loader jenkins.util.URLClassLoader2 @246903eb; org.apache.commons.lang3.math.Fraction is in unnamed module of loader jenkins.util.URLClassLoader2 @6d3d8c68)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.lambda$asValueMap$0(CoverageStatistics.java:62)

and

2023-05-03 12:14:40.987+0000 [id=2180]  WARNING h.ExpressionFactory2$JexlExpression#evaluate: Caught exception evaluating: it.getCoverageText(job) in /job/xxx/job/yyy/job/zzz/. Reason: java.lang.NullPointerException
java.lang.NullPointerException
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.asValueMap(CoverageStatistics.java:61)
    at io.jenkins.plugins.coverage.metrics.model.CoverageStatistics.<init>(CoverageStatistics.java:57)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction.getStatistics(CoverageBuildAction.java:230)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageMetricColumn.lambda$getCoverageValue$1(CoverageMetricColumn.java:165)
    at java.base/java.util.Optional.flatMap(Unknown Source)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageMetricColumn.getCoverageValue(CoverageMetricColumn.java:165)
    at io.jenkins.plugins.coverage.metrics.steps.CoverageMetricColumn.getCoverageText(CoverageMetricColumn.java:149)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)

might be unrelated.

uhafner commented 1 year ago

I released https://github.com/jenkinsci/code-coverage-api-plugin/releases/tag/v4.5.0: this should hopefully avoid the NPE but still suffers from a deserialization problem. I added a logger, maybe it helps to identify the problematic build.

viceice commented 1 year ago

how do I enable the finest log level for the plug-in? i never changed logging at Jenkins before 😇

viceice commented 1 year ago

v4.5.0 fixed the issue. coverage trend is now visible again. will check the logs for errors later

uhafner commented 1 year ago

Use http://localhost:8080/manage/log/ and add a new log recorder. There you can set the level to FINE and the class to io.jenkins.plugins.coverage.metrics.steps.CoverageBuildAction

uhafner commented 1 year ago

v4.5.0 fixed the issue. coverage trend is now visible again. will check the logs for errors later

Ok, good to see. In that release I also remove the serialization to commons lang3 in the XML files and replaced it with a custom serialization. So hopefully, the other error will not occur in future serializations anymore.

So I am closing this issue, feel free to reopen if required. You still can comment on this one if you get some logging details.

viceice commented 1 year ago

I found this: image

viceice commented 1 year ago

I now also configured the logger, but didn't see anything yet

uhafner commented 1 year ago

I found this: image

You can try to remove the unreadable data. Hopefully, this will remove the issue as well.