jenkinsci / jenkinsci/junit-plugin
java.lang.OutOfMemoryError: Java heap space when publishing large surefire reports
- Dominant language
- Java
- Stars
- 87
- Forks
- 351
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 2
Description
### Jenkins and plugins versions report
Environment
```text
Jenkins 2.263.4
```
### What Operating System are you using (both controller, and any agents involved in the problem)?
RHEL 7
### Reproduction steps
1. Create a project that generates very large surefire reports
2. Try to publish these using the junitPublisher
### Expected Results
A successful run with the test results attached
### Actual Results
A "successful" run. However, when looking into the console logs, we see this stacktrace:
```
ERROR: [withMaven] WARNING Exception executing Maven reporter 'Junit Publisher' / org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher. Please report a bug associated for the component 'pipeline-maven-plugin' at https://issues.jenkins-ci.org
java.io.IOException: Remote call on *** (***) failed
at hudson.remoting.Channel.call(Channel.java:1007)
at hudson.FilePath.act(FilePath.java:1157)
at hudson.FilePath.act(FilePath.java:1146)
at hudson.tasks.junit.JUnitParser.parseResult(JUnitParser.java:107)
at hudson.tasks.junit.JUnitResultArchiver.parse(JUnitResultArchiver.java:149)
at hudson.tasks.junit.JUnitResultArchiver.parseAndAttach(JUnitResultArchiver.java:180)
at org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher.executeReporter(JunitTestsPublisher.java:324)
at org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher.process(JunitTestsPublisher.java:211)
at org.jenkinsci.plugins.pipeline.maven.MavenSpyLogProcessor.processMavenSpyLogs(MavenSpyLogProcessor.java:153)
at org.jenkinsci.plugins.pipeline.maven.WithMavenStepExecution2$WithMavenStepExecutionCallBack.finished(WithMavenStepExecution2.java:1097)
at org.jenkinsci.plugins.workflow.steps.GeneralNonBlockingStepExecution$TailCall.lambda$onSuccess$0(GeneralNonBlockingStepExecution.java:140)
at org.jenkinsci.plugins.workflow.steps.GeneralNonBlockingStepExecution.lambda$run$0(GeneralNonBlockingStepExecution.java:77)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.OutOfMemoryError: Java heap space
at com.sun.org.apache.xerces.internal.xni.XMLString.append(XMLString.java:246)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:1330)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanCDATASection(XMLDocumentFragmentScannerImpl.java:1653)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3013)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:504)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:642)
at org.dom4j.io.SAXReader.read(SAXReader.java:494)
at org.dom4j.io.SAXReader.read(SAXReader.java:392)
at hudson.tasks.junit.SuiteResult.parse(SuiteResult.java:178)
at hudson.tasks.junit.TestResult.parse(TestResult.java:378)
at hudson.tasks.junit.TestResult.parsePossiblyEmpty(TestResult.java:308)
at hudson.tasks.junit.TestResult.parse(TestResult.java:224)
at hudson.tasks.junit.TestResult.parse(TestResult.java:196)
at hudson.tasks.junit.TestResult.(TestResult.java:151)
at hudson.tasks.junit.JUnitParser$ParseResultCallable.invoke(JUnitParser.java:144)
at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3313)
at hudson.remoting.UserRequest.perform(UserRequest.java:211)
at hudson.remoting.UserRequest.perform(UserRequest.java:54)
at hudson.remoting.Request$2.run(Request.java:375)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:73)
... 4 more
```
### Anything else?
Note that the pipeline-maven-plugin catches all exceptions and logs these to the console. Therefore, the build reports successful, while in reality, there could be failed tests and the junitPublisher has failed.
Contributor guide
Assessment
This issue has not been assessed yet.