[Gradle, JS] Fix NPM resolution synchronization issues
#KT-49201 Fixed
This commit is contained in:
committed by
Space
parent
f4067f05a2
commit
754595e496
+6
-5
@@ -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"
|
||||
}
|
||||
|
||||
+2
-1
@@ -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<BuildServiceParameters.None> {
|
||||
private val mayBeUpToDateTasks = mutableSetOf<String>()
|
||||
private val mayBeUpToDateTasks = ConcurrentHashMap.newKeySet<String>()
|
||||
|
||||
fun markForNpmDependenciesResolve(task: KotlinPackageJsonTask) {
|
||||
mayBeUpToDateTasks.add(task.path)
|
||||
|
||||
Reference in New Issue
Block a user