ci-jenkins-pipelines icon indicating copy to clipboard operation
ci-jenkins-pipelines copied to clipboard

Tests fail with error: incoming YAML document exceeds the limit

Open adamfarley opened this issue 8 months ago • 2 comments
trafficstars

What are you trying to do? Run Adoptium tests that appear to return YAML files that require parsing.

Expected behaviour: These YAML files should be parsed without error.

Observed behaviour:

[2025-02-19T21:21:01.805Z]         Rebuild_Same_JDK_Reproducibility_Test_Mac_0_FAILED
[2025-02-19T21:21:01.805Z]     duration_ms: 1338313
[2025-02-19T21:21:01.805Z] ]: The incoming YAML document exceeds the limit: 3145728 code points.

Other tests are also affected. Examples: https://ci.adoptium.net/job/Test_openjdk17_hs_sanity.external_x86-64_linux/44/ https://ci.adoptium.net/job/Test_openjdk21_hs_special.system_aarch64_mac/10/

Any other comments:

Here is a chunk of the stack from the error:

[2025-02-19T21:21:01.805Z] 	at PluginClassLoader for tap//org.tap4j.plugin.TapPublisher.perform(TapPublisher.java:312)
[2025-02-19T21:21:01.805Z] 	at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
[2025-02-19T21:21:01.805Z] 	at PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)
[2025-02-19T21:21:01.805Z] 	at PluginClassLoader for workflow-basic-steps//org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)
[2025-02-19T21:21:01.805Z] 	at PluginClassLoader for workflow-step-api//org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
[2025-02-19T21:21:01.805Z] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[2025-02-19T21:21:01.805Z] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[2025-02-19T21:21:01.805Z] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[2025-02-19T21:21:01.805Z] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[2025-02-19T21:21:01.805Z] 	at java.base/java.lang.Thread.run(Thread.java:840)
[2025-02-19T21:21:01.815Z] Caused by: org.tap4j.parser.ParserException: Error parsing YAML [    output:

Based on this, I think that a jenkins plugin is using a tap4j YAML parser, which uses snakeyaml to parse a yaml file which is using the default limit on code points.

This forum message here suggests that it is possible to expand the limits of the the Yaml class by using LoaderOptions, which I think needs to be added here.

Will discuss with community.

adamfarley avatar Feb 24 '25 16:02 adamfarley

FYI @sophia-guo Just as we have turned off pushing the entire console output of openjdk test failures to the TAP file, we may need to adjust it for this one, OR alter the reproducible shell script that is being run to be less verbose (dump to a file, which gets included in the attached test_outpup.zip artifact).

smlambert avatar Feb 24 '25 16:02 smlambert

Reproducing output issue see https://github.com/adoptium/temurin-build/pull/4144

external one see https://github.com/adoptium/TKG/pull/678

External test has been explicitely set diagnosticLevel='noDetails' due to it's output issue with TAP plugin. Tapfile should not turn it on.

sophia-guo avatar Mar 03 '25 18:03 sophia-guo