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

koverHtmlReport fails randomly with "Stream closed" or "zip file closed" #436

Closed
technoir42 opened this issue Jul 26, 2023 · 10 comments
Closed
Assignees
Labels
Bug Bug issue type S: in progress Status: implementing or design in process

Comments

@technoir42
Copy link

technoir42 commented Jul 26, 2023

Describe the bug
koverHtmlReport tasks fail randomly in a multi-project build with JVM and Android modules.

Errors

Caused by: jetbrains.coverage.report.ReportGenerationFailedException: Failed to create report directory
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.createReportDir(HTMLReportBuilderImpl.java:189)	
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.doGenerateReport(HTMLReportBuilderImpl.java:100)	
  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.execute(KoverHtmlOrXmlReport.kt:93)
Caused by: java.lang.IllegalStateException: zip file closed
  at java.util.zip.ZipFile.ensureOpen(ZipFile.java:831)
  at java.util.zip.ZipFile.getEntry(ZipFile.java:330)
  at java.util.jar.JarFile.getEntry(JarFile.java:518)
  at sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:131)
  at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:135)
  at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:175)
  at java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:296)
  at java.lang.Class.getResourceAsStream(Class.java:2850)
  at jetbrains.coverage.report.impl.IOUtil.copyResource(IOUtil.java:55)
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.prepareReportDir(HTMLReportBuilderImpl.java:202)
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.createReportDir(HTMLReportBuilderImpl.java:187)
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.doGenerateReport(HTMLReportBuilderImpl.java:100)
  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.execute(KoverHtmlOrXmlReport.kt:93)
Caused by: java.lang.NullPointerException: Cannot invoke "java.net.URLConnection.setUseCaches(boolean)" because "this.jarFileURLConnection" is null
  at jetbrains.coverage.report.impl.IOUtil.copyResource(IOUtil.java:55)	
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.prepareReportDir(HTMLReportBuilderImpl.java:203)	
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.createReportDir(HTMLReportBuilderImpl.java:187)	
  at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.doGenerateReport(HTMLReportBuilderImpl.java:100)	
  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.execute(KoverHtmlOrXmlReport.kt:93)

Expected behavior
No random failures.

Reproducer
The only configuration we changed is exclude some classes.

koverReport {
    filters {
        excludes {
            annotatedBy("javax.annotation.Generated", "javax.annotation.processing.Generated")
        }
    }
}

Reports
If applicable, report files or screenshots.

Environment

  • Kover Gradle Plugin version: 0.7.2
  • Gradle version: 8.1.1
  • Kotlin project type: Kotlin/JVM + Kotlin/Android
@technoir42 technoir42 added Bug Bug issue type S: untriaged Status: issue reported but unprocessed labels Jul 26, 2023
@shanshin shanshin added S: in progress Status: implementing or design in process and removed S: untriaged Status: issue reported but unprocessed labels Jul 27, 2023
@JavierSegoviaCordoba
Copy link

I see this, and it is random, sometimes it fails, and other times it works, without any change in the code, as rerunning the action usually passes.

@mgroth0
Copy link

mgroth0 commented Aug 9, 2023

I just got the same issue. Using kover 0.7.3, gradle 8.2.1 and IntelliJ 232.8660.185. Only happened once, totally random.

caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing kotlinx.kover.gradle.plugin.tools.kover.HtmlReportAction
	at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:283)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:321)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:304)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:309)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:92)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66)
	at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:256)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	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.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:233)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:216)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:199)
	at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:166)
	at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
	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.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:28)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:100)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:72)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:50)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:179)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:70)
	at org.gradle.internal.Either$Right.fold(Either.java:175)
	at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:68)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:46)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:91)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:55)
	at java.base/java.util.Optional.orElseGet(Optional.java:364)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:37)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:77)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:38)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:94)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:49)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:71)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:45)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNonEmptySources(SkipEmptyWorkStep.java:177)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:81)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:53)
	at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
	at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
	at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:75)
	at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:41)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:32)
	at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:293)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:21)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34)
	at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:146)
	... 60 more
Caused by: jetbrains.coverage.report.ReportGenerationFailedException: Failed to generate file: /my/project/path/build/reports/kover/html/ns-f/sources/source-1.html. Cannot invoke "java.net.URLConnection.setUseCaches(boolean)" because "this.jarFileURLConnection" is null
	at jetbrains.coverage.report.impl.html.TemplateProcessorBase.createFileFromTemplate(TemplateProcessorBase.java:83)
	at jetbrains.coverage.report.impl.html.TemplateProcessorBase.renderTemplate(TemplateProcessorBase.java:69)
	at jetbrains.coverage.report.impl.html.ClassSourceReportGenerator.generateClassCoverage(ClassSourceReportGenerator.java:52)
	at jetbrains.coverage.report.impl.html.HTMLReportBuilderImpl.generateReportForModule(HTMLReportBuilderImpl.java:180)
	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.execute(KoverHtmlOrXmlReport.kt:94)
	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: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)
	... 7 more
Caused by: java.lang.NullPointerException: Cannot invoke "java.net.URLConnection.setUseCaches(boolean)" because "this.jarFileURLConnection" is null
	at java.base/sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:168)
	at java.base/sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:175)
	at freemarker.cache.URLTemplateSource.close(URLTemplateSource.java:126)
	at freemarker.cache.URLTemplateLoader.closeTemplateSource(URLTemplateLoader.java:64)
	at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:460)
	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)
	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)
	... 47 more

@mgroth0
Copy link

mgroth0 commented Aug 9, 2023

May or may not be related to #446

@shanshin
Copy link
Collaborator

Fixed in 0.7.4

@nicbell
Copy link

nicbell commented Nov 14, 2023

Still experiencing this randomly in 0.7.4

@technoir42
Copy link
Author

@shanshin can you share the commit where this was fixed?

@shanshin
Copy link
Collaborator

shanshin commented Nov 15, 2023

@technoir42 JetBrains/coverage-report@11feee6

This bug appears when running code of FreeMarker inside Gradle Workers, and for most cases it resolves by re-reading resources (report template) from the jar.

The root cause was not found, because it was not possible to create a stable producer, perhaps this is due to the peculiarity of the work of the Gradle classloaders themselves, since full isolation mode is used for Gradle workers.

@nicbell
Copy link

nicbell commented Jan 23, 2024

@shanshin I still get this from time to time with 0.7.5 but not as often as before. I think the fix improved it but didn't fix it completely.

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':[removed]:koverHtmlReport'.
> A failure occurred while executing kotlinx.kover.gradle.plugin.tools.kover.HtmlReportAction
   > Failed to generate file: /builds/[removed]/build/reports/kover/html/ns-7/index_SORT_BY_BLOCK.html. zip file closed

@JavierSegoviaCordoba
Copy link

@shanshin
Copy link
Collaborator

@JavierSegoviaCordoba, same issue already opened #510

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Bug issue type S: in progress Status: implementing or design in process
Projects
None yet
Development

No branches or pull requests

5 participants