diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt index 5c8c6557d4c..2dabc244c46 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt @@ -185,10 +185,11 @@ internal class KotlinRootNpmResolver internal constructor( fun alreadyResolvedMessage(action: String) = "Cannot $action. NodeJS projects already resolved." - @Synchronized fun addProject(target: Project) { - check(state == State.CONFIGURING) { alreadyResolvedMessage("add new project: $target") } - projectResolvers[target.path] = KotlinProjectNpmResolver(target, this) + synchronized(projectResolvers) { + check(state == State.CONFIGURING) { alreadyResolvedMessage("add new project: $target") } + projectResolvers[target.path] = KotlinProjectNpmResolver(target, this) + } } operator fun get(projectPath: String) = projectResolvers[projectPath] ?: error("$projectPath is not configured for JS usage") @@ -228,7 +229,7 @@ internal class KotlinRootNpmResolver internal constructor( * Don't use directly, use [KotlinNpmResolutionManager.installIfNeeded] instead. */ internal fun prepareInstallation(logger: Logger): Installation { - synchronized(this@KotlinRootNpmResolver) { + synchronized(projectResolvers) { check(state == State.CONFIGURING) { "Projects must be configuring" } @@ -270,7 +271,7 @@ internal class KotlinRootNpmResolver internal constructor( services: ServiceRegistry, logger: Logger ): KotlinRootNpmResolution { - synchronized(this@KotlinRootNpmResolver) { + synchronized(projectResolvers) { check(state == State.PROJECTS_CLOSED) { "Projects must be closed" } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/MayBeUpToDatePackageJsonTasksRegistry.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/MayBeUpToDatePackageJsonTasksRegistry.kt index a91ab393e2f..b3b138dc313 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/MayBeUpToDatePackageJsonTasksRegistry.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/MayBeUpToDatePackageJsonTasksRegistry.kt @@ -10,9 +10,10 @@ import org.gradle.api.provider.Provider import org.gradle.api.services.BuildService import org.gradle.api.services.BuildServiceParameters import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask +import java.util.concurrent.ConcurrentHashMap internal abstract class MayBeUpToDatePackageJsonTasksRegistry : BuildService { - private val mayBeUpToDateTasks = mutableSetOf() + private val mayBeUpToDateTasks = ConcurrentHashMap.newKeySet() fun markForNpmDependenciesResolve(task: KotlinPackageJsonTask) { mayBeUpToDateTasks.add(task.path)