From 9d88e90821162aad019dbfdf3a7bd41e450bae17 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Thu, 22 Feb 2024 17:45:04 +0100 Subject: [PATCH] [BTA, Gradle] Share cached classloaders between builds ^KT-64353 Fixed --- .../internal/ClassLoadersCachingBuildService.kt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ClassLoadersCachingBuildService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ClassLoadersCachingBuildService.kt index b11dc33cce3..7fec06c9f59 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ClassLoadersCachingBuildService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ClassLoadersCachingBuildService.kt @@ -27,9 +27,7 @@ internal interface UsesClassLoadersCachingBuildService : Task { /** * A [BuildService] for caching [ClassLoader] instances */ -internal abstract class ClassLoadersCachingBuildService : BuildService, AutoCloseable { - // The service could be used by multiple tasks in parallel, so the map have to be synchronized - private val classLoaders = ConcurrentHashMap() +internal abstract class ClassLoadersCachingBuildService : BuildService { private val logger = Logging.getLogger(javaClass) fun getClassLoader( @@ -42,12 +40,10 @@ internal abstract class ClassLoadersCachingBuildService : BuildService() + fun registerIfAbsent(project: Project) = project.gradle.registerClassLoaderScopedBuildService(ClassLoadersCachingBuildService::class).also { serviceProvider -> SingleActionPerProject.run(project, UsesClassLoadersCachingBuildService::class.java.name) {