gradle / gradle

Adaptable, fast automation for all
https://gradle.org
Apache License 2.0
16.95k stars 4.75k forks source link

Configuration cache state could not be cached: error writing value of type 'org.gradle.kotlin.dsl.KotlinClosure1' > value.owner must not be null #26465

Closed TWiStErRob closed 1 year ago

TWiStErRob commented 1 year ago

Current Behavior

gradlew --no-daemon --no-build-cache --stacktrace --continue :allTestsReport -Pnet.twisterrob.build.verboseReports=true -Pnet.twisterrob.build.testConcurrencyOverride=PerSuite ``` To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.4-rc-1/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build Calculating task graph as no configuration cache is available for tasks: :allTestsReport > Task :plugins:generateExternalPluginSpecBuilders UP-TO-DATE > Task :plugins:extractPrecompiledScriptPluginPlugins UP-TO-DATE > Task :plugins:compilePluginsBlocks UP-TO-DATE > Task :plugins:generatePrecompiledScriptPluginAccessors UP-TO-DATE > Task :plugins:generateScriptPluginAdapters UP-TO-DATE > Task :plugins:compileKotlin UP-TO-DATE > Task :plugins:compileJava NO-SOURCE > Task :plugins:pluginDescriptors UP-TO-DATE > Task :plugins:processResources UP-TO-DATE > Task :plugins:classes UP-TO-DATE > Task :plugins:jar UP-TO-DATE FAILURE: Build failed with an exception. * What went wrong: Configuration cache state could not be cached: field `closure` of `org.gradle.listener.ClosureBackedMethodInvocationDispatch` bean found in field `subscribedListeners` of `org.gradle.api.tasks.testing.AbstractTestTask$BroadcastSubscriptions` bean found in field `testListenerSubscriptions` of task `:shared:unitTest` of type `org.gradle.api.tasks.testing.Test`: error writing value of type 'org.gradle.kotlin.dsl.KotlinClosure1' > value.owner must not be null * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. * Exception is: org.gradle.configurationcache.ConfigurationCacheError: Configuration cache state could not be cached: field `closure` of `org.gradle.listener.ClosureBackedMethodInvocationDispatch` bean found in field `subscribedListeners` of `org.gradle.api.tasks.testing.AbstractTestTask$BroadcastSubscriptions` bean found in field `testListenerSubscriptions` of task `:shared:unitTest` of type `org.gradle.api.tasks.testing.Test`: error writing value of type 'org.gradle.kotlin.dsl.KotlinClosure1' at org.gradle.configurationcache.problems.ProblemsListener$DefaultImpls.onError(ProblemsListener.kt:37) at org.gradle.configurationcache.problems.ConfigurationCacheProblems.onError(ConfigurationCacheProblems.kt:38) at org.gradle.configurationcache.serialization.AbstractIsolateContext.onError(Contexts.kt:418) at org.gradle.configurationcache.serialization.beans.BeanPropertyWriterKt.writeNextProperty(BeanPropertyWriter.kt:100) at org.gradle.configurationcache.serialization.beans.BeanPropertyWriter.writeStateOf(BeanPropertyWriter.kt:53) at org.gradle.configurationcache.serialization.codecs.BeanCodec.writeBeanOf(BeanCodec.kt:59) at org.gradle.configurationcache.serialization.codecs.BeanCodec.encode(BeanCodec.kt:37) at org.gradle.configurationcache.serialization.CombinatorsKt$reentrant$1$encodeLoop$1.invokeSuspend(Combinators.kt:144) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115) at org.gradle.configurationcache.serialization.CombinatorsKt$reentrant$1.encodeLoop(Combinators.kt:146) at org.gradle.configurationcache.serialization.CombinatorsKt$reentrant$1.encode(Combinators.kt:116) at org.gradle.configurationcache.serialization.codecs.BindingsBackedCodec.encode(BindingsBackedCodec.kt:52) at org.gradle.configurationcache.serialization.DefaultWriteContext.write(Contexts.kt:87) at org.gradle.configurationcache.serialization.beans.BeanPropertyWriterKt.writeNextProperty(BeanPropertyWriter.kt:98) at org.gradle.configurationcache.serialization.beans.BeanPropertyWriter.writeStateOf(BeanPropertyWriter.kt:53) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodec$writeTask$3$2$1.invokeSuspend(TaskNodeCodec.kt:103) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodec$writeTask$3$2$1.invoke(TaskNodeCodec.kt) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodec$writeTask$3$2$1.invoke(TaskNodeCodec.kt) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodecKt.withTaskOf(TaskNodeCodec.kt:237) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodecKt.access$withTaskOf(TaskNodeCodec.kt:1) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodec.writeTask(TaskNodeCodec.kt:97) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodec.encode(TaskNodeCodec.kt:74) at org.gradle.configurationcache.serialization.codecs.TaskNodeCodec.encode(TaskNodeCodec.kt:67) at org.gradle.configurationcache.serialization.codecs.BindingsBackedCodec.encode(BindingsBackedCodec.kt:52) at org.gradle.configurationcache.serialization.DefaultWriteContext.write(Contexts.kt:87) at org.gradle.configurationcache.serialization.codecs.WorkNodeCodec.writeNodes(WorkNodeCodec.kt:68) at org.gradle.configurationcache.serialization.codecs.WorkNodeCodec.writeWork(WorkNodeCodec.kt:53) at org.gradle.configurationcache.ConfigurationCacheState.writeWorkGraphOf(ConfigurationCacheState.kt:456) at org.gradle.configurationcache.ConfigurationCacheState.writeBuildContent$configuration_cache(ConfigurationCacheState.kt:417) at org.gradle.configurationcache.ConfigurationCacheState.writeBuildState(ConfigurationCacheState.kt:284) at org.gradle.configurationcache.ConfigurationCacheState.writeBuildsInTree(ConfigurationCacheState.kt:256) at org.gradle.configurationcache.ConfigurationCacheState.writeRootBuild(ConfigurationCacheState.kt:231) at org.gradle.configurationcache.ConfigurationCacheState.writeRootBuildState(ConfigurationCacheState.kt:145) at org.gradle.configurationcache.ConfigurationCacheIO$writeRootBuildStateTo$1.invokeSuspend(ConfigurationCacheIO.kt:138) at org.gradle.configurationcache.ConfigurationCacheIO$writeRootBuildStateTo$1.invoke(ConfigurationCacheIO.kt) at org.gradle.configurationcache.ConfigurationCacheIO$writeRootBuildStateTo$1.invoke(ConfigurationCacheIO.kt) at org.gradle.configurationcache.ConfigurationCacheIO$writeConfigurationCacheState$3$1.invokeSuspend(ConfigurationCacheIO.kt:190) at org.gradle.configurationcache.ConfigurationCacheIO$writeConfigurationCacheState$3$1.invoke(ConfigurationCacheIO.kt) at org.gradle.configurationcache.ConfigurationCacheIO$writeConfigurationCacheState$3$1.invoke(ConfigurationCacheIO.kt) at org.gradle.configurationcache.serialization.RunningKt$runWriteOperation$1.invokeSuspend(Running.kt:45) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115) at org.gradle.configurationcache.serialization.RunningKt.runToCompletion(Running.kt:56) at org.gradle.configurationcache.serialization.RunningKt.runWriteOperation(Running.kt:44) at org.gradle.configurationcache.ConfigurationCacheIO.writeConfigurationCacheState(ConfigurationCacheIO.kt:189) at org.gradle.configurationcache.ConfigurationCacheIO.writeRootBuildStateTo$configuration_cache(ConfigurationCacheIO.kt:136) at org.gradle.configurationcache.DefaultConfigurationCache$writeConfigurationCacheState$1.run(DefaultConfigurationCache.kt:405) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withReplacedLocks(DefaultWorkerLeaseService.java:360) at org.gradle.api.internal.project.DefaultProjectStateRegistry$DefaultBuildProjectRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:239) at org.gradle.api.internal.project.DefaultProjectStateRegistry$DefaultBuildProjectRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:232) at org.gradle.configurationcache.DefaultConfigurationCache.writeConfigurationCacheState(DefaultConfigurationCache.kt:404) at org.gradle.configurationcache.DefaultConfigurationCache.access$writeConfigurationCacheState(DefaultConfigurationCache.kt:55) at org.gradle.configurationcache.DefaultConfigurationCache$saveWorkGraph$1.invoke(DefaultConfigurationCache.kt:332) at org.gradle.configurationcache.DefaultConfigurationCache$saveWorkGraph$1.invoke(DefaultConfigurationCache.kt:332) at org.gradle.configurationcache.DefaultConfigurationCache$saveToCache$1$1.invoke(DefaultConfigurationCache.kt:347) at org.gradle.configurationcache.DefaultConfigurationCache$saveToCache$1$1.invoke(DefaultConfigurationCache.kt:345) at org.gradle.configurationcache.ConfigurationCacheRepository$StoreImpl$useForStore$1.invoke(ConfigurationCacheRepository.kt:192) at org.gradle.configurationcache.ConfigurationCacheRepository$StoreImpl$useForStore$1.invoke(ConfigurationCacheRepository.kt:184) at org.gradle.configurationcache.ConfigurationCacheRepository$withExclusiveAccessToCache$1.create(ConfigurationCacheRepository.kt:261) at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.withFileLock(LockOnDemandCrossProcessCacheAccess.java:90) at org.gradle.cache.internal.DefaultCacheCoordinator.withFileLock(DefaultCacheCoordinator.java:219) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.withFileLock(DefaultPersistentDirectoryStore.java:179) at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.withFileLock(DefaultCacheFactory.java:214) at org.gradle.configurationcache.ConfigurationCacheRepository.withExclusiveAccessToCache(ConfigurationCacheRepository.kt:259) at org.gradle.configurationcache.ConfigurationCacheRepository.access$withExclusiveAccessToCache(ConfigurationCacheRepository.kt:50) at org.gradle.configurationcache.ConfigurationCacheRepository$StoreImpl.useForStore(ConfigurationCacheRepository.kt:184) at org.gradle.configurationcache.DefaultConfigurationCache$saveToCache$1.invoke(DefaultConfigurationCache.kt:345) at org.gradle.configurationcache.DefaultConfigurationCache$saveToCache$1.invoke(DefaultConfigurationCache.kt:344) at org.gradle.configurationcache.ConfigurationCacheBuildOperationsKt$withOperation$1.call(ConfigurationCacheBuildOperations.kt:60) 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:78) at org.gradle.configurationcache.ConfigurationCacheBuildOperationsKt.withOperation(ConfigurationCacheBuildOperations.kt:55) at org.gradle.configurationcache.ConfigurationCacheBuildOperationsKt.withStoreOperation(ConfigurationCacheBuildOperations.kt:34) at org.gradle.configurationcache.DefaultConfigurationCache.saveToCache(DefaultConfigurationCache.kt:344) at org.gradle.configurationcache.DefaultConfigurationCache.saveWorkGraph(DefaultConfigurationCache.kt:332) at org.gradle.configurationcache.DefaultConfigurationCache.access$saveWorkGraph(DefaultConfigurationCache.kt:55) at org.gradle.configurationcache.DefaultConfigurationCache$loadOrScheduleRequestedTasks$1.invoke(DefaultConfigurationCache.kt:139) at org.gradle.configurationcache.DefaultConfigurationCache$loadOrScheduleRequestedTasks$1.invoke(DefaultConfigurationCache.kt:137) at org.gradle.configurationcache.DefaultConfigurationCache.runWorkThatContributesToCacheEntry(DefaultConfigurationCache.kt:304) at org.gradle.configurationcache.DefaultConfigurationCache.loadOrScheduleRequestedTasks(DefaultConfigurationCache.kt:137) at org.gradle.configurationcache.ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1.apply(ConfigurationCacheAwareBuildTreeWorkController.kt:45) at org.gradle.configurationcache.ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1.apply(ConfigurationCacheAwareBuildTreeWorkController.kt:44) at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewWorkGraph(DefaultIncludedBuildTaskGraph.java:112) at org.gradle.configurationcache.ConfigurationCacheAwareBuildTreeWorkController.scheduleAndRunRequestedTasks(ConfigurationCacheAwareBuildTreeWorkController.kt:44) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$scheduleAndRunTasks$1(DefaultBuildTreeLifecycleController.java:68) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:98) at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:169) at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:266) at org.gradle.internal.model.StateTransitionController.lambda$transition$7(StateTransitionController.java:169) at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44) at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:169) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:95) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:68) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:63) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49) at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:65) at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:140) at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41) at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40) at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:123) at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40) at org.gradle.internal.buildtree.InitDeprecationLoggingActionExecutor.execute(InitDeprecationLoggingActionExecutor.java:62) at org.gradle.internal.buildtree.InitProblems.execute(InitProblems.java:38) at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40) at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:65) at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:58) at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57) 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:78) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57) at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128) at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36) at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:110) at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64) at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:92) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:80) at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:51) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:39) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75) at org.gradle.util.internal.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:53) 9 actionable tasks: 9 up-to-date at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) Caused by: java.lang.NullPointerException: value.owner must not be null at org.gradle.configurationcache.serialization.codecs.ClosureCodec.findOwningScript(ClosureCodec.kt:63) at org.gradle.configurationcache.serialization.codecs.ClosureCodec.encode(ClosureCodec.kt:43) at org.gradle.configurationcache.serialization.codecs.ClosureCodec.encode(ClosureCodec.kt:39) at org.gradle.configurationcache.serialization.codecs.BindingsBackedCodec.encode(BindingsBackedCodec.kt:52) at org.gradle.configurationcache.serialization.DefaultWriteContext.write(Contexts.kt:87) at org.gradle.configurationcache.serialization.beans.BeanPropertyWriterKt.writeNextProperty(BeanPropertyWriter.kt:98) ... 168 more BUILD FAILED in 14s Configuration cache entry discarded due to serialization error. ```
* What went wrong:
Configuration cache state could not be cached: field `closure` of `org.gradle.listener.ClosureBackedMethodInvocationDispatch` bean found in field `subscribedListeners` of `org.gradle.api.tasks.testing.AbstractTestTask$BroadcastSubscriptions` bean found in field `testListenerSubscriptions` of task `:shared:unitTest` of type `org.gradle.api.tasks.testing.Test`: error writing value of type 'org.gradle.kotlin.dsl.KotlinClosure1'
> value.owner must not be null

https://github.com/TWiStErRob/net.twisterrob.cinema/actions/runs/6251313027/job/16972163206#step:12:36

Expected Behavior

No CC exception when using KotlinClosure1, and/or a better error message explaining why it's wrong.

Context (optional)

Renovate is upgrading to Gradle 8.4-rc-1 and caught a potential regression.

The relevant pieces of code in the repro * `configureVerboseReportsForGithubActions` uses `beforeSuite(KotlinClosure1({` on a `Test` receiver. * `fun Test.configureVerboseReportsForGithubActions()` Defined in `Heroku/gradle/plugins/src/main/kotlin/net/twisterrob/cinema/build/logging/configureVerboseReportsForGithubActions.kt` * This function is used in `id("net.twisterrob.cinema.build.logging")` plugin Defined in `Heroku/gradle/plugins/src/main/kotlin/net/twisterrob/cinema/build/logging.gradle.kts` * This plugin is applied through `net.twisterrob.cinema.library.gradle.kts` in `:shared > build.gradle.kts`.

I was able to work around these NPEs by migrating away from Closure to typed Listener APIs: https://github.com/TWiStErRob/net.twisterrob.cinema/pull/552/commits/3409eadb139099a5a1642e1fd8c3fe9e2fe877bb, although the listeners don't work yet, very likely due to deserialization issues of the captured local variable called lookup. CI fail.

I checked CI of main and it actually seems that these listeners were broken on main (has no log output since CC is on), which suggests this is related to https://github.com/gradle/gradle/issues/25311 or more specifically https://github.com/gradle/gradle/pull/25983. I was able to fix the listeners by extracting a class to simulate capturing the local variable myself (https://github.com/TWiStErRob/net.twisterrob.cinema/pull/552/commits/b39e88fc98a2fe991240a11e8ddb2aee6f801872). I think this might be worth a separate issue, or it could be the manifestation of the same problem.

Note that everything works with --no-configuration-cache.

Steps to Reproduce

  1. Clone https://github.com/TWiStErRob/net.twisterrob.cinema.git
  2. Check out 6f721536ada0d167127ae4bbbb9698c8826256fd
  3. Go inside the Heroku folder
  4. Upgrade to Gradle 8.4 RC1 (see PR updating two wrappers)
  5. Run gradlew :shared:unitTest -Pnet.twisterrob.build.verboseReports=true

This was not erroring on 8.3 and before.

Gradle version

Gradle 8.4-rc-1

Gradle version that used to work

Gradle 8.3

Build scan URL (optional)

No response

Your Environment (optional)

I tried to create a smaller repro, but no luck so far. Sorry about too much info in this report. Let me know if there's anything I could clarify. I'm also on Gradle Slack as @twisterrob.

jbartok commented 1 year ago

Thank you for providing a valid report.

The issue is in the backlog of the relevant team and is prioritised by them.

bamboo commented 1 year ago

Thanks for the report, @TWiStErRob!

It will be fixed in the next RC.