jessewilson
11/16/2023, 6:37 AMjava.lang.IllegalStateException: Already completed with Success(com.example.mymodule)
at org.jetbrains.kotlin.gradle.utils.Completable.completeWith(Future.kt:240)
at org.jetbrains.kotlin.gradle.utils.Completable.complete(Future.kt:263)
at org.jetbrains.kotlin.gradle.utils.MappedFutureImpl.getOrThrow(Future.kt:161)
at org.jetbrains.kotlin.gradle.utils.LenientFutureImpl.getOrThrow(Future.kt:185)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.toModuleDependencyIdentifier(GranularMetadataTransformation.kt:305)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.processDependency(GranularMetadataTransformation.kt:262)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.doTransform(GranularMetadataTransformation.kt:159)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.access$doTransform(GranularMetadataTransformation.kt:90)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation$metadataDependencyResolutions$2.invoke(GranularMetadataTransformation.kt:124)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation$metadataDependencyResolutions$2.invoke(GranularMetadataTransformation.kt:124)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.getMetadataDependencyResolutions(GranularMetadataTransformation.kt:124)
at org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyTransformationTask.transformMetadata(MetadataDependencyTransformationTask.kt:135)
...
My best guess is that MappedFutureImpl.getOrThrow()
is making racy calls to value.complete()
. My build also uses --parallel
!a-dd
11/16/2023, 7:40 AMAnton Lakotka [JB]
11/16/2023, 10:20 AMjessewilson
11/16/2023, 3:27 PM--parallel
plus Gradle’s build cache.Anton Lakotka [JB]
11/16/2023, 4:22 PMtasks.withType<MetadataDependencyTransformationTask>().configureEach {
// share some fake directory as an output
// this will make Gradle to run MetadataDependencyTransformationTask tasks in sequential order
outputs.dir(layout.buildDirectory.file("tmp"))
}
jessewilson
11/16/2023, 6:14 PM