Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kover generates error stacktrace in HTML report file #510

Closed
nvkleban opened this issue Nov 20, 2023 · 4 comments · Fixed by #540
Closed

Kover generates error stacktrace in HTML report file #510

nvkleban opened this issue Nov 20, 2023 · 4 comments · Fixed by #540
Assignees
Labels
Bug Bug issue type S: ready for release Status: merged in the main branch

Comments

@nvkleban
Copy link

Describe the bug
Sometimes Kover generates error stacktrace in the start of html report file for some modules in android project. Can't reproduce it reliably.

Errors

FreeMarker template error (DEBUG mode; use RETHROW in production!): Template inclusion failed (for parameter value "macros.ftl"): Stream closed ---- FTL stack trace ("~" means nesting-related): - Failed at: #include "macros.ftl" [in template "namespaces.ftl" at line 4, column 1] ---- Java stack trace (for programmers): ---- freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...] at freemarker.core.Include.accept(Include.java:164) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at jetbrains.coverage.report.impl.html.TemplateProcessorBase.processModelLoop(TemplateProcessorBase.java:96) at jetbrains.coverage.report.impl.html.TemplateProcessorBase.createFileFromTemplate(TemplateProcessorBase.java:81) at jetbrains.coverage.report.impl.html.TemplateProcessorBase.renderTemplate(TemplateProcessorBase.java:69) at jetbrains.coverage.report.impl.html.NamespacesIndexGenerator.generateNamespacesIndex(NamespacesIndexGenerator.java:43) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.generateReportForModule(HTMLReportBuilderImpl.java:173) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.doGenerateReport(HTMLReportBuilderImpl.java:120) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.generateReport(HTMLReportBuilderImpl.java:93) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.generateReport(HTMLReportBuilderImpl.java:88) at com.intellij.rt.coverage.report.Reporter.createHTMLReport(Reporter.java:67) at com.intellij.rt.coverage.report.api.ReportApi.htmlReport(ReportApi.java:49) at kotlinx.kover.gradle.plugin.tools.kover.HtmlReportAction.generate(KoverHtmlOrXmlReport.kt:72) at kotlinx.kover.gradle.plugin.tools.kover.AbstractReportAction.execute(Actions.kt:38) at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54) at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48) at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48) at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49) at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30) at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.lambda$execute$0(IsolatedClassloaderWorkerFactory.java:57) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:49) at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:169) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.io.IOException: Stream closed at java.base/java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67) at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142) at java.base/java.io.FilterInputStream.read(FilterInputStream.java:132) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188) at java.base/java.io.InputStreamReader.read(InputStreamReader.java:177) at java.base/java.io.BufferedReader.fill(BufferedReader.java:162) at java.base/java.io.BufferedReader.read1(BufferedReader.java:213) at java.base/java.io.BufferedReader.read(BufferedReader.java:287) at freemarker.template.Template$LineTableBuilder.read(Template.java:863) at freemarker.core.SimpleCharStream.FillBuff(SimpleCharStream.java:116) at freemarker.core.SimpleCharStream.readChar(SimpleCharStream.java:198) at freemarker.core.SimpleCharStream.BeginToken(SimpleCharStream.java:138) at freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8124) at freemarker.core.FMParser.jj_ntk_f(FMParser.java:6028) at freemarker.core.FMParser.PCData(FMParser.java:3811) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3963) at freemarker.core.FMParser.Root(FMParser.java:4665) at freemarker.template.Template.(Template.java:252) at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549) at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:440) at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:293) at freemarker.template.Configuration.getTemplate(Configuration.java:2910) at freemarker.core.Environment.getTemplateForInclusion(Environment.java:3062) at freemarker.core.Include.accept(Include.java:162) ... 54 more

Expected behavior
Normal html report file generated.

Reproducer
N\A

Reports
N\A

Environment

  • Kover Gradle Plugin version: 0.7.4
  • Gradle version: 8.1.1
  • Kotlin project type: Kotlin/Android
  • Coverage Toolset (if customized in build script): Kover
  • Other context important for this bug: Mac OS Ventura 13.4.1
@nvkleban nvkleban added Bug Bug issue type S: untriaged Status: issue reported but unprocessed labels Nov 20, 2023
@nvkleban nvkleban changed the title Kover generates error stacktrace Kover generates error stacktrace in HTML report file Nov 20, 2023
@shanshin shanshin added S: in progress Status: implementing or design in process and removed S: untriaged Status: issue reported but unprocessed labels Nov 20, 2023
@mobile-pablo
Copy link

reproduced

FreeMarker template error (DEBUG mode; use RETHROW in production!): Template inclusion failed (for parameter value "macros.ftl"): Stream closed ---- FTL stack trace ("~" means nesting-related): - Failed at: #include "macros.ftl" [in template "empty.ftl" at line 1, column 1] ---- Java stack trace (for programmers): ---- freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...] at freemarker.core.Include.accept(Include.java:164) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at jetbrains.coverage.report.impl.html.TemplateProcessorBase.processModelLoop(TemplateProcessorBase.java:96) at jetbrains.coverage.report.impl.html.TemplateProcessorBase.createFileFromTemplate(TemplateProcessorBase.java:81) at jetbrains.coverage.report.impl.html.TemplateProcessorBase.renderTemplate(TemplateProcessorBase.java:69) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.doGenerateReport(HTMLReportBuilderImpl.java:117) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.generateReport(HTMLReportBuilderImpl.java:93) at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.generateReport(HTMLReportBuilderImpl.java:88) at com.intellij.rt.coverage.report.Reporter.createHTMLReport(Reporter.java:67) at com.intellij.rt.coverage.report.api.ReportApi.htmlReport(ReportApi.java:49) at kotlinx.kover.gradle.plugin.tools.kover.HtmlReportAction.generate(KoverHtmlOrXmlReport.kt:72) at kotlinx.kover.gradle.plugin.tools.kover.AbstractReportAction.execute(Actions.kt:38) at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54) at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48) at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48) at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49) at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30) at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.lambda$execute$0(IsolatedClassloaderWorkerFactory.java:57) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:49) at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:170) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:133) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157) at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.io.IOException: Stream closed at java.base/java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67) at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142) at java.base/java.io.FilterInputStream.read(FilterInputStream.java:132) at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270) at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313) at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188) at java.base/java.io.InputStreamReader.read(InputStreamReader.java:177) at java.base/java.io.BufferedReader.fill(BufferedReader.java:162) at java.base/java.io.BufferedReader.read1(BufferedReader.java:213) at java.base/java.io.BufferedReader.read(BufferedReader.java:287) at freemarker.template.Template$LineTableBuilder.read(Template.java:863) at freemarker.core.SimpleCharStream.FillBuff(SimpleCharStream.java:116) at freemarker.core.SimpleCharStream.readChar(SimpleCharStream.java:198) at freemarker.core.SimpleCharStream.BeginToken(SimpleCharStream.java:138) at freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8124) at freemarker.core.FMParser.jj_ntk_f(FMParser.java:6028) at freemarker.core.FMParser.PCData(FMParser.java:3811) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3963) at freemarker.core.FMParser.Root(FMParser.java:4665) at freemarker.template.Template.(Template.java:252) at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549) at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:440) at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:293) at freemarker.template.Configuration.getTemplate(Configuration.java:2910) at freemarker.core.Environment.getTemplateForInclusion(Environment.java:3062) at freemarker.core.Include.accept(Include.java:162) ... 52 more
uicomponents: Overall Coverage Summary
No coverage information was found
generated on 2023-12-01 23:07

shanshin added a commit that referenced this issue Feb 14, 2024
When generating an HTML report, errors sometimes occur when reading the freemarker template from resources. The exact cause of the error has not yet been determined (relates to the Gradle isolated class loaders), but it disappears when you try to read again.
In some cases, it is necessary to increase the number of repetitions, so this setting was made in Kover Gradle plugin.

Fixes #510
shanshin added a commit that referenced this issue Feb 14, 2024
When generating an HTML report, errors sometimes occur when reading the freemarker template from resources. The exact cause of the error has not yet been determined (relates to the Gradle isolated class loaders), but it disappears when you try to read again.
In some cases, it is necessary to increase the number of repetitions, so this setting was made in Kover Gradle plugin.

Fixes #510
shanshin added a commit that referenced this issue Feb 15, 2024
When generating an HTML report, errors sometimes occur when reading the freemarker template from resources. The exact cause of the error has not yet been determined (relates to the Gradle isolated class loaders), but it disappears when you try to read again.
In some cases, it is necessary to increase the number of repetitions, so this setting was made in Kover Gradle plugin.

Fixes #510
PR #540
@shanshin shanshin added S: ready for release Status: merged in the main branch and removed S: in progress Status: implementing or design in process labels Feb 15, 2024
@shanshin shanshin reopened this Feb 15, 2024
@shanshin
Copy link
Collaborator

Fixed in 0.7.6

If the problem repeats frequently again, reopen the issue.

@nvkleban
Copy link
Author

nvkleban commented Apr 3, 2024

@shanshin Not sure if it's the same error but on CI this one happened:

> A failure occurred while executing kotlinx.kover.gradle.plugin.tools.kover.HtmlReportAction
> Failed to generate file: /builds/[removed]/build/reports/kover/html/ns-2/index_SORT_BY_BLOCK.html. zip file closed

Similar to experienced in 436

kover = "0.7.6"

@shanshin
Copy link
Collaborator

shanshin commented Apr 3, 2024

Yes, it's the same error, but in the coming 0.8.0 it shouldn't appear anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Bug issue type S: ready for release Status: merged in the main branch
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants